码迷,mamicode.com
首页 > 其他好文 > 详细

数据挖掘算法学习(一)K-Means算法

时间:2014-07-28 00:03:39      阅读:343      评论:0      收藏:0      [点我收藏+]

标签:数据挖掘   weka   k-means   分类算法   算法应用   

博主最近实习开始接触数据挖掘,将学习笔记分享给大家。目前用的软件是weka,下篇文章会着重讲解。


算法简介:

K-Means算法是输入聚类个数k,以及包含n个数据对象的数据库,输出满足方差最小标准的k个聚类。并使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类对象相似度较小

算法假设:

均方误差是计算群组分散度的最佳参数。

算法输入:

聚类个数k;包含n个数据对象的数据集

算法输出:

k个聚类

算法思想:

(a)绿点表示数据集在二级的欧几里德空间,初始化的中心点u1u2用红的和蓝的叉来分别表示

(b)在最初的E步骤中,每个点根据离哪个簇中心点近,被指定为属于红簇还是蓝簇,这等于将这些点根据垂直于两个中心点的分隔线的的哪边分类,它用紫色的线表示。

(c)在接下来的M步骤,重新计算每个簇的中心点的平均值作为每个簇的中心点。

直至中心点位置不变或者变化很小。

bubuko.com,布布扣


weka运行:

以weather.nominal.arff为例运行结果部分截图如下:

bubuko.com,布布扣

bubuko.com,布布扣

从结果中可以看出,这组数据用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.图片分割

bubuko.com,布布扣

图为取不同k值时的效果。

2.电子商务中分析商品相似度,归类商品

3.分析公司的客户分类,使用不同的商业策略



原创文章,转载请注明出处,谢谢。



数据挖掘算法学习(一)K-Means算法,布布扣,bubuko.com

数据挖掘算法学习(一)K-Means算法

标签:数据挖掘   weka   k-means   分类算法   算法应用   

原文地址:http://blog.csdn.net/iemyxie/article/details/38173495

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!