K-means K均值聚类

聚类

K-means 是聚类算法。不同于分类,聚类是事先不知道有几类的情况下,将数据聚合成几个群体,相当于自己划出几个类出来,属于无监督学习。

K-means 算法流程

1)选质心:随机选取K个数据作为质心

2)聚集:对全局数据,计算质心之外的数据到K个质心的距离,到哪个质心距离最近就归到这个质心的团体中

3)选质心:得到了K个团体,对各个团体通过计算数据的平均值得到该团体新的质心(此时的质心很可能是虚拟点,即不存在原数据中)

4)重新聚集:对全局数据,计算质心之外的数据到K个质心的距离,到哪个质心距离最近就归到这个质心的团体中

5)验证:查看这次聚集的团体跟上次聚集的团体有没有变化。没有变化则结束,有变化则继续循环3)和 4)

通过图解就是:

通过上图可以看到6)相对于5)的团体没有变化,所以已经收敛,聚类结束

实例

问题:将下面6个点聚类为2类

1)选择P1和P2为初始质心

2)通过计算其它点到质心P1, P2的距离来聚集团体:

根据距离计算,得到两个团体:
A 团: P1
B 团: P2, P3, P4, P5, P6

3)对A, B团分别选新质心:

A团质心是P1自己,B团质心是PB=(6.2, 5.6)

4)围绕质心P1和PB,重新聚集团体:

首先距离计算为

更新团体为:
C 团: P1, P2, P3
D 团: P4, P5, P6

团体相对A,B发生了改变,所以继续

5)对C, D团分别选新质心:

C团质心是PC=(1.33, 1), D团质心是PD=(9, 8.33)

6)围绕质心PC和PD,重新聚集团体:

首先距离计算为

更新团体为:
E 团: P1, P2, P3
F 团: P4, P5, P6

团体相对C,D没有改变,所以已经收敛了。结束!

以上。

参考

https://blog.csdn.net/huangfei711/article/details/78480078