聚类评价指标

内容参考于该博客,叙述得较为全面:https://blog.csdn.net/liuy9803/article/details/80762862

我在此基础上再稍微做点总结和补充:

****************************** 需要给定实际类别信息 labels_true **************************************

1. 同分类的评价指标:混淆矩阵(precision、recall、F-measure)

2.均一性(Homogeneity):指每个簇中只包含单个类别的样本。如果一个簇中的类别只有一个,则均一性为1;如果有多个类别,计算该类别下的簇的条件经验熵H(C|K),值越大则均一性越小。

metrics.homogeneity_score(labels_true, labels_pred)  

3. 完整性(Completeness)指同类别样本被归类到相同的簇中。如果同类样本全部被分在同一个簇中,则完整性为1;如果同类样本被分到不同簇中,计算条件经验熵H(K|C),值越大则完整性越小。

metrics.completeness_score(labels_true, labels_pred)

4. 单独考虑均一性或完整性都是片面的,因此引入两个指标的加权平均V-measure。如果β>1则更注重完整性,如果β<1则更注重均一性。

metrics.v_measure_score(labels_true, labels_pred)

5. 杰卡德相似系数(Jaccard Similarity Coefficient)

6. 皮尔逊相关系数(Pearson Correlation Coefficient)

7. 兰德指数RI与调整兰德指数ARI

metrics.adjusted_rand_score(labels_true, labels_pred)

8. 互信息MI与调整互信息AMI

metrics.adjusted_mutual_info_score(labels_true, labels_pred)

metrics.mutual_info_score(labels_true, labels_pred)

metrics.normalized_mutual_info_score(labels_true, labels_pred)

9. Fowlkes-Mallows scores

metrics.fowlkes_mallows_score(labels_true, labels_pred)

***************************************** 数据集结构未知 **************************************************

1. Davies-Boulding指数(DBI)

2. Dunn 指数(DI)

3. 距离计算:(1)闵可夫斯基距离(Minkowski);(2)KL距离;(3)夹角余弦相似度;(4)轮廓系数(Silhouette Coefficient)

metrics.silhouette_score(X, labels, metric='euclidean')

4. Calinski-Harabaz Index

这个计算简单直接,得到的Calinski-Harabasz分数值ss越大则聚类效果越好。Calinski-Harabasz分数值ss的数学计算公式是:

 也就是说,类别内部数据的协方差越小越好,类别之间的协方差越大越好,这样的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_
>>> from sklearn import metrics

>>> metrics.calinski_harabaz_score(X, labels)  
560.39...

你可能感兴趣的:(机器学习,聚类)