K-Means聚类算法 k-means聚类算法 c

KMeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。

K-Means聚类算法主要分为三个步骤:
(1)第一步是为待聚类的点寻找聚类中心
(2)第二步是计算每个点到聚类中心的距离,将每个点聚类到离该点最近的聚类中去
(3)第三步是计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心
反复执行(2)、(3),直到聚类中心不再进行大范围移动或者聚类次数达到要求为止

下图展示了对n个样本点进行K-means聚类的效果,这里k取2:
(a)未聚类的初始点集
(b)随机选取两个点作为聚类中心
(c)计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去
(d)计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心
(e)重复(c),计算每个点到聚类中心的距离,并聚类到离该点最近的聚类中去
(f)重复(d),计算每个聚类中所有点的坐标平均值,并将这个平均值作为新的聚类中心

Matlab实现:

详见:http://www.oschina.net/code/snippet_176897_10239

执行结果:

>> Kmeans
6 iterations, total sum of distances = 204.821
10 iterations, total sum of distances = 205.886
16 iterations, total sum of distances = 204.821
9 iterations, total sum of distances = 205.886
........
K-Means聚类算法 k-means聚类算法 c
9 iterations, total sum of distances = 205.886
8 iterations, total sum of distances = 204.821
8 iterations, total sum of distances = 204.821
14 iterations, total sum of distances = 205.886
14 iterations, total sum of distances = 205.886
6 iterations, total sum of distances = 204.821

Ctrs =
1.0754 -1.0632
1.04821.3902
-1.1442 -1.1121


SumD =
64.2944
63.5939
76.9329

聚类效果:


Matlab R2012a Documentation:

http://www.mathworks.com.sixxs.org/help/toolbox/stats/kmeans.html?nocookie=true
stackoverflow:kmeans example in matlab does not run:

http://stackoverflow.com/questions/8411117/kmeans-example-in-matlab-does-not-run

  

爱华网本文地址 » http://www.413yy.cn/a/25101013/159523.html

更多阅读

转载 C语言贪心算法 c语言贪心算法

你真牛原文地址:C语言贪心算法作者:人鱼的泪贪心算法开放分类:算法、信息学贪心算法所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最

转载 沉珂女士的真实男友到底是什么人?! 沉珂男友

这年头有些人想出名想疯了,一年前我就在贴吧发帖澄清过“幽灵”和沉珂照片的传闻,现在还是有那么多无知SB继续拿这件事炒作。原文地址:沉珂女士的真实男友到底是什么人?!作者:观澜乱码2011年3月一个晚上,我跟老费在木屋烧烤园博园分店吃饭

声明:《K-Means聚类算法 k-means聚类算法 c》为网友餦街舊魜灬分享!如侵犯到您的合法权益请联系我们删除