K-means

Posted hapyygril

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了K-means相关的知识,希望对你有一定的参考价值。

一、K-means聚类步骤:

(1)选择k个初始聚类中心

(2)计算每个对象与这k个中心各自的距离,按照最小距离原则分配到最邻近聚类

(3)使用每个聚类中的样本均值作为新的聚类中心

(4)重复步骤(2)和(3)直到聚类中心不再变化

(5)结束,得到k个聚类

  

二、评价聚类的指标:

(1)inertias:是K-Means模型对象的属性,它作为没有真实分类结果标签下的非监督式评估指标。表示样本到最近的聚类中心的距离总和。值越小越好,越小表示样本在类间的分布越集中。

三、确定k的数目:

    手肘法的核心指标是SSE(sum of the squared errors,误差平方和)

    

def cal_k(self):

SSE = [] # 存放每次结果的误差平方和
for k in range(1, self.m+1):
estimator = KMeans(n_clusters=k) # 构造聚类器
estimator.fit(self.data_cluster())
SSE.append(estimator.inertia_)

SSE=DataFrame(SSE)
returns=np.abs(SSE/SSE.shift(1)-1)
returns=returns.values[1:]
mean_k=np.mean(returns)
flag=True
i = 0
while flag:
if returns[i] > mean_k:
i+=1
else:
flag=False
k=i+1
return k




















以上是关于K-means的主要内容,如果未能解决你的问题,请参考以下文章

毕业了,在Python中使用 OpenCV 和K-Means 聚类对毕业照进行图像分割

4. K-Means和K-Means++实现

K-means聚类算法一文详解+Python代码实例

通过Python实践K-means算法

K-Means 聚类算法原理分析与代码实现

目标检测K-means和K-means++计算anchors结果比较(附完整代码,全网最详细的手把手教程)