使用Python实现K-Means算法

K-Means是一种聚类(Clustering)算法,使用它可以为数据分类。K代表你要把数据分为几个组,前文实现的K-Nearest Neighbor算法也有一个K,实际上,它们有一个相似之处:K-Means也使用欧拉距离公式。

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

为了更好的理解这个K-Means,本帖使用Python实现K-Means算法。

K-Means简单图示(sklearn)

使用Python实现K-Means算法

使用Python实现K-Means算法
*是两组数据的”中心点”;x是预测点分组。上面使用的是二维数据,方便可视化。

使用Python实现K-Means算法

K-Means聚类算法主要分为三个步骤:

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

Python代码:

执行结果:

使用Python实现K-Means算法

K-Means算法需要你指定K值,也就是需要人为指定数据应该分为几组。下一帖我会实现Mean Shift算法,它也是一种聚类算法(Hierarchical),和K-Means(Flat)不同的是它可以自动判断数据集应该分为几组。

在实际数据上应用K-Means算法

执行结果:

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注