评估聚类算法的性能并不像计算错误数量或监督分类算法的精度和召回率那么简单。特别是任何评价指标不应考虑集群的绝对值的标签,而是如果这个集群定义分离的数据类似于一些地标准数据类或满足一些假设,根据某种相似性度量,这样成员属于同一类相似度大于不同的类的成员。
Silhouette Coefficient
如果真实的标签不知道,评估必须使用模型本身来执行。轮廓系数(sklearn.metrics. Silhouette ette_score)就是这种评价的一个例子,轮廓系数得分越高,表示具有定义的聚类的模型越好。定义每个样本的轮廓系数,由两个分值组成
a:一个样本与同类中所有其它点之间的平均距离。一个样本与同类中所有其它点之间的平均距离。
b:样本与下一个最近聚类中所有其它点之间的平均距离。
则单样本的轮廓系数s为:
例子
>>> from sklearn import metrics
>>> from sklearn.metrics import pairwise_distances
>>> from sklearn import datasets
>>> X, y = datasets.load_iris(return_X_y=True)
>>> 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 不正确的聚类得分为-1,而高度密集的聚类得分为+1。0左右的分数表示重叠的集群
2 当集群密集且分离良好时,得分较高,这与集群的标准概念有关
3 如基于密度的簇,如通过DBSCAN得到的簇的轮廓系数通常高于其他概念的簇。
来源:sklearn官网
地址:https://scikit-learn.org/stable/modules/clustering.html#clustering-evaluation