sklearn聚类算法评估方法 之各种系数

python中的分群质量

主要参考来自官方文档:Clustering

部分内容来源于:机器学习评价指标大汇总
个人比较偏好的三个指标有:Calinski-Harabaz Index(未知真实index的模型评估)、Homogeneity, completeness and V-measure(聚类数量情况)、轮廓系数

1.1 Adjusted Rand index 调整兰德系数

这里写图片描述

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.adjusted_rand_score(labels_true, labels_pred)  
0.24

.

1.2 Mutual Information based scores 互信息

这里写图片描述
Two different normalized versions of this measure are available, Normalized Mutual Information(NMI) and Adjusted Mutual Information(AMI). NMI is often used in the literature while AMI was proposed more recently and is normalized against chance:

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.adjusted_mutual_info_score(labels_true, labels_pred)  
0.22504

.

1.3 Homogeneity, completeness and V-measure

同质性homogeneity:每个群集只包含单个类的成员。
完整性completeness:给定类的所有成员都分配给同一个群集。

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]

>>> metrics.homogeneity_score(labels_true, labels_pred)  
0.66...

>>> metrics.completeness_score(labels_true, labels_pred) 
0.42...

两者的调和平均V-measure:

>>> metrics.v_measure_score(labels_true, labels_pred)    
0.51...

.

1.4 Fowlkes-Mallows scores

The Fowlkes-Mallows score FMI is defined as the geometric mean of the pairwise precision and recall:
这里写图片描述

>>> from sklearn import metrics
>>> labels_true = [0, 0, 0, 1, 1, 1]
>>> labels_pred = [0, 0, 1, 1, 2, 2]
>>>
>>> metrics.fowlkes_mallows_score(labels_true, labels_pred)  
0.47140...

.

1.5 Silhouette Coefficient 轮廓系数

这里写图片描述

>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X)
>>> labels = kmeans_model.labels_
>>> metrics.silhouette_score(X, labels, metric='euclidean')
...                                                      
0.55...

.

1.6 Calinski-Harabaz Index

这个计算简单直接,得到的Calinski-Harabasz分数值ss越大则聚类效果越好。Calinski-Harabasz分数值ss的数学计算公式是(理论介绍来源于:用scikit-learn学习K-Means聚类):

这里写图片描述
 也就是说,类别内部数据的协方差越小越好,类别之间的协方差越大越好,这样的Calinski-Harabasz分数会高。
 在scikit-learn中, Calinski-Harabasz Index对应的方法是metrics.calinski_harabaz_score.
在真实的分群label不知道的情况下,可以作为评估模型的一个指标。
同时,数值越小可以理解为:组间协方差很小,组与组之间界限不明显。
与轮廓系数的对比,笔者觉得最大的优势:快!相差几百倍!毫秒级

>>> import numpy as np
>>> from sklearn.cluster import KMeans
>>> kmeans_model = KMeans(n_clusters=3, random_state=1).fit(X)
>>> labels = kmeans_model.labels_
>>> metrics.calinski_harabaz_score(X, labels)  
560.39...
sklearn中,有很多用于评估聚类算法性能的指标。一些常用的聚类评估指标包括: - 轮廓系数(silhouette_score):它衡量了一个样本与其同类别样本和其他类别样本的相似度。具体来说,它计算了每个样本的轮廓系数,然后对所有样本的轮廓系数取平均值,得到聚类的整体轮廓系数。较高的轮廓系数表示聚类结果较好。 - 调整互信息(adjusted_mutual_info_score):它度量了聚类结果与真实类别之间的相似度。较高的调整互信息值表示聚类结果与真实类别更相似。 - 调整兰德指数(adjusted_rand_score):它也度量了聚类结果与真实类别之间的相似度,但是与调整互信息不同的是,它是基于成对的样本之间的相似度进行计算的。 - Calinski-Harabasz指数(calinski_harabasz_score):它是通过计算类别之间的方差与类别内部的方差的比值来评估聚类的紧密性。较高的Calinski-Harabasz指数表示聚类结果更紧密。 - Davies-Bouldin指数(davies_bouldin_score):它度量了不同类别之间的相似度与类别内部的相似度的平均比值。较低的Davies-Bouldin指数表示聚类结果更好。 除了上述指标,sklearn还提供了其他一些聚类评估指标,如完整度(completeness_score)、Fowlkes-Mallows指数(fowlkes_mallows_score)、同质性(homogeneity_score)等。这些指标可以根据具体的需求选择使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [基于sklearn聚类算法聚类效果指标](https://blog.csdn.net/qq_27825451/article/details/94436488)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值