数据挖掘算法学习(一)K-Means算法
博主近期实习開始接触数据挖掘,将学习笔记分享给大家。眼下用的软件是weka。下篇文章会着重解说。
转载请附上链接http://blog.csdn.net/iemyxie/article/details/38173495
算法简单介绍:
K-Means算法是输入聚类个数k,以及包括n个数据对象的数据库,输出满足方差最小标准的k个聚类。并使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类对象相似度较小。
算法如果:
均方误差是计算群组分散度的最佳參数。
算法输入:
聚类个数k;包括n个数据对象的数据集。
算法输出:
k个聚类
算法思想:
(a)绿点表示数据集在二级的欧几里德空间。初始化的中心点u1和u2用红的和蓝的叉来分别表示
(b)在最初的E步骤中。每一个点依据离哪个簇中心点近,被指定为属于红簇还是蓝簇。这等于将这些点依据垂直于两个中心点的分隔线的的哪边分类,它用紫色的线表示。
(c)在接下来的M步骤。又一次计算每一个簇的中心点的平均值作为每一个簇的中心点。
直至中心点位置不变或者变化非常小。
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWVteXhpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
weka执行:
以weather.nominal.arff为例执行结果部分截图例如以下:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWVteXhpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
从结果中能够看出。这组数据用K-Means算法迭代四次,初始产生了两个中心点。终于有10个instances聚合为一类,4个instances聚合为一类。
函数调用代码:
//读入样本
Filefile=new File("F:\\Program Files (x86)\\Weka-3-7\\data\\weather.nominal.arff");
ArffLoaderloader= newArffLoader();
loader.setFile(file);
ins=loader.getDataSet();
//初始化聚类器并设置k值
KM= new SimpleKMeans();
KM.setNumClusters(2);
//进行聚类
KM.buildClusterer(ins);
//打印结果
tempIns=KM.getClusterCentroids();
System.out.println(“CentroIds:”+tempIns);
执行结果例如以下:
@attributeoutlook {sunny,overcast,rainy}
@attribute temperature {hot,mild,cool}
@attribute humidity {high,normal}
@attribute windy {TRUE,FALSE}
@attribute play {yes,no}
@data
sunny,mild,high,FALSE,yes
overcast,cool,normal,TRUE,yes
算法应用:
1.图片切割
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWVteXhpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
图为取不同k值时的效果。
3.分析公司的客户分类,使用不同的商业策略
原创文章,转载请附上链接http://blog.csdn.net/iemyxie/article/details/38173495
数据挖掘算法学习(一)K-Means算法的更多相关文章
- R语言学习笔记—K近邻算法
K近邻算法(KNN)是指一个样本如果在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.即每个样本都可以用它最接近的k个邻居来代表.KNN算法适 ...
- Kmeans算法学习与SparkMlLib Kmeans算法尝试
K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的 ...
- 机器学习:k-NN算法(也叫k近邻算法)
一.kNN算法基础 # kNN:k-Nearest Neighboors # 多用于解决分裂问题 1)特点: 是机器学习中唯一一个不需要训练过程的算法,可以别认为是没有模型的算法,也可以认为训练数据集 ...
- 转载: scikit-learn学习之K最近邻算法(KNN)
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...
- KNN 与 K - Means 算法比较
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
- 【算法学习笔记】Meissel-Lehmer 算法 (亚线性时间找出素数个数)
「Meissel-Lehmer 算法」是一种能在亚线性时间复杂度内求出 \(1\sim n\) 内质数个数的一种算法. 在看素数相关论文时发现了这个算法,论文链接:Here. 算法的细节来自 OI w ...
- 四旋翼基础算法学习2-IMU输入滤波算法
前言: 处理器读取陀螺仪加速度计数据后首先需要对数据进行滤波处理,此文分析比较几种常用的滤波算法. 参考学习:四轴加速度计滤波 IMU: IMU使用MPU9250(即MPU6500),设置加速度量程± ...
- 机器学习算法( 二、K - 近邻算法)
一.概述 k-近邻算法采用测量不同特征值之间的距离方法进行分类. 工作原理:首先有一个样本数据集合(训练样本集),并且样本数据集合中每条数据都存在标签(分类),即我们知道样本数据中每一条数据与所属分类 ...
- 算法学习之选择排序算法的python实现
——参考自<算法图解> def findSmallest(arr): # 假设第一个元素最小 smallest = arr[0] smallest_index = 0 for i in r ...
- 算法学习之二分查找算法的python实现
——参考自<算法图解> 我们假设需要查找的数组是有序的(从大到小或者从小到大),如果无序,可以在第四行后插入一句 my_list.sort() 完整代码如下 def binary_sear ...
随机推荐
- android 系统签名【转】
本文转载自:http://blog.csdn.net/csh86277516/article/details/73549824 Android——编译release版签名系统 AndroidManif ...
- poj 3913(水)
Description You have devised a new encryption technique which encodes a message by inserting between ...
- nyoj--106--背包问题(贪心,水题)
背包问题 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 现在有很多物品(它们是可以分割的),我们知道它们每个物品的单位重量的价值v和重量w(1<=v,w<= ...
- FH Admin
http://www.360doc.com/content/14/0713/08/8072791_394027312.shtml
- [Java] Oracle的JDBC驱动的版本说明
classes12.jar,ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别,之间的差异 作者:赵磊 博客:http://elf8848.iteye.com 来源:http:/ ...
- express jade ejs 为什么要用这些?
express是快速构建web应用的一个框架 线上文档 http://www.expressjs.com.cn/ 不用express行不行呢? 看了网上的回答:不用express直接搭,等你 ...
- jQuery中事件模块介绍
事件模块 1.提供其他DOM方法 包括:next 和 nextAll方法 1.1 next方法实现 目标:扩展框架方法,获取当前元素的下一个元素 问题:如何获取下一个元素? 1.1.1 提供 next ...
- Appium 环境搭建 - macOS
本文没有安装 Appium Desktop,Appium Server 直接在命令行中进行即可. Homebrew,macOS 包管理器: ruby -e "$(curl -fsSL htt ...
- postgreSQL格式化时间的函数详解
数据类型格式化函数: PostgreSQL格式化函数提供一套有效的工具用于把各种数据类型(日期/时间.integer.floating point和numeric)转换成格式化的字符串以及反过来 ...
- java函数式编程之lambda表达式
作为比较老牌的面向对象的编程语言java,在对函数式编程的支持上一直不温不火. 认为面向对象式编程就应该纯粹的面向对象,于是经常看到这样的写法:如果你想写一个方法,那么就必须把它放到一个类里面,然后n ...