机器学习 K-means 算法

1 简介

K-means称为K-平均算法,简单来讲K-平均聚类算法的目的就是:

把 n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离他最近的均值(此即聚类中心)对应的聚类,以之作为聚类的标准。

已知观测集 (x1,x2,…,xn),其中每个观测都是一个 d-维实向量,k-平均聚类要把这 n个观测划分到k个集合中(k≤n),使得组内平方和(WCSS within-cluster sum of squares)最小。换句话说,它的目标是找到使得下式满足的聚类 Si,

其中 μi是 Si中所有点的均值。

2 算法流程

步骤1 分配(Assignment)

将每个观测分配到聚类中,使得组内平方和(WCSS)达到最小。

因为这一平方和就是平方后的欧氏距离,所以很直观地把观测分配到离它最近得均值点即可 。

步骤2 更新(Update)

对于上一步得到的每一个聚类,以聚类中观测值的图心,作为新的均值点。

这一算法经常被描述为“把观测按照距离分配到最近的聚类”。标准算法的目标函数是组内平方和(WCSS),而且按照“最小二乘和”来分配观测,确实是等价于按照最小欧氏距离来分配观测的。如果使用不同的距离函数来代替(平方)欧氏距离,可能使得算法无法收敛。然而,使用不同的距离函数,也能得到k-均值聚类的其他变体,如球体k-均值算法和k-中心点算法。

3 代码实例

初始化

将点归类到与聚类中心距离最短的类别

更新聚类中心

更新聚类中心之后的聚类分布

最终聚类效果

我们将df导出之后可以看到每个点的所属分类:

具体分类

4 更多资料

k-平均算法 维基百科

K-means聚类算法

数据挖掘十大算法--K-均值聚类算法

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190117G0Q45D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券