ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

[机器学习]Kmeans聚类算法和性能指标

2021-12-01 21:34:44  阅读:357  来源: 互联网

标签:系数 Kmeans km 算法 聚类 性能指标 sklearn


文章目录


资料整理


一、Kmeans算法及其优缺点

跳过算法原理

1.简单介绍

Kmeans算法是基于划分的聚类算法,其优化目标是同类的点尽量近,类间的点尽量远。

需要做的是(1)给定聚类个数K(2)选择K个初始点,可以是随机值,也可以是随机的样本点(3)迭代至终止条件

经典K-means算法具体流程,基于贪心策略

(1)随机地选择k个初始点,每个点代表了一个簇的中心;

(2)对每个样本,将它分配给最近的簇;

(3)重新计算每个簇的平均值,更新为新的簇中心;

(4)不断重复2、3,直到达到某个终止条件。
这个终止条件可以是:没有(或最小数目)对象被重新分配给不同的聚类

2.K-means的优点与缺点

优点:对于大型数据集也是简单高效、时间复杂度、空间复杂度低。
缺点:数据集大时结果容易局部最优;需要预先设定K值,对最先的K个中心点选取很敏感;对噪声和离群值非常敏感;只用于数值型数据;不能解决非凸(non-convex)数据。

二、性能指标

python的sklearn.cluster库提供了Kmeans算法

1.选择K值

如果没有指定聚类个数,那么最优K值的选择有一定的方法和指标

手肘法

定义聚类的误差平方和

在这里插入图片描述随着聚类数k的增大,样本划分会更加精细,每个簇的聚合程度会逐渐提高,那么误差平方和SSE自然会逐渐变小,当k小于最优聚类数时,由于k的增大会大幅增加每个簇的聚合程度,故SSE的下降幅度会很大,而当k到达最优聚类数后,再增加k所得到的聚合程度回报会迅速变小,所以SSE的下降幅度会骤减,然后随着k值的继续增大而趋于平缓,也就是说SSE和k的关系图是一个手肘的形状,而这个肘部对应的k值就是数据的最优聚类数
在这里插入图片描述K=4时,斜率开始趋于平缓,那么k值可以选择4

轮廓系数

轮廓系数的计算方法如下:

计算 a(i) = average(i向量到所有它属于的簇中其它点的距离),称为簇内不相似度

计算 b(i) = min (i向量到与它相邻最近的一簇内的所有点的平均距离),称为簇间不相似度

那么i向量轮廓系数就为:在这里插入图片描述在这里插入图片描述所有点的轮廓系数的平均值,即聚类结果的总的轮廓系数。
轮廓系数的取值在[-1,1]之间,越趋近于1代表内聚度和分离度都相对较优,即聚类效果越好。(当簇内只有一点时,我们定义轮廓系数s(i)为0)

在这里插入图片描述K=4取到最大值,那么可以选择4为聚类个数

CH指标

CH指标是数据集的分离度与紧密度的比值,以各类中心点与数据集的中心点的距离平方和来度量数据集的分离度,以类内各点与其类中心的距离平方和来度量数据的紧密度。聚类效果越好,类间差距应该越大,类内差距越小,即类自身越紧密,类间越分散,CH指标值越大聚类效果越好。

sklearn提供的方法

以下是3个指标的使用方法

#SSE
from sklearn.cluster import Kmeans
km=KMeans(n_clusters=i)
km.fit(x)
y1=km.predict(x)
SSE=km.inertia_

from sklearn import metrics
km=KMeans(n_clusters=i)
km.fit(x)
y1=km.predict(x)
#SC
sc=metrics.silhouette_score(x,y1)
#CH
ch=metrics.calinski_harabaz_score(x,y1)

以上方法任选其一即可

2.其他性能指标

具体查看参考文章

轮廓系数和CH指标也可作为不同模型对同一聚类问题的性能对比,除此以外还有戴维森堡丁指数
sklearn提供了davies_bouldin_score(X, labels)方法


参考文章
1.零基础学习Kmeans聚类算法的原理与实现过程
2.聚类算法性能指标
3.基于sklearn的聚类算法的聚类效果指标

标签:系数,Kmeans,km,算法,聚类,性能指标,sklearn
来源: https://blog.csdn.net/Je_san/article/details/121663580

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有