内部指标(无标签)
Silhouette Coefficient(轮廓系数)
如果不知道实际情况标签,则必须使用模型本身进行评估。轮廓系数(sklearn.metrics.silhouette)是此类评估的一个例子,其中较高的轮廓系数分数与具有更好定义的集群的模型相关。轮廓系数为每个样本定义,由两个分数组成:
a: 样本与同一类中所有其他点之间的平均距离。
b: 一个样本与下一个最近的聚类中所有其他点之间的平均距离。
单个样本的轮廓系数s如下所示:
s = b − a m a x ( a , b ) ) s= \frac{b-a}{max(a,b))} s=max(a,b))b−a
一组样本的轮廓系数是每个样本的轮廓系数的平均值。
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')
优点:
1)对于不正确的聚类,分数在-1之间,对于高度密集的聚类,分数在+1之间。分数为零表示重叠的簇。
2)当集群密集且分离良好时,s值更高,这与集群的标准概念有关。
缺点:
凸簇的轮廓系数通常比其他簇的概念更高,例如通过DBSCAN获得的基于密度的簇。
Calinski-Harabasz Index(CHI)
如果不知道真相的标签,卡林斯基-哈拉巴斯指数(sklearn.metrics.calinski_harabasz_score)-也称为方差比准则-可用于评估模型,其中较高的Calinski-Harabasz分数与具有更好定义簇的模型相关。
指数是所有簇的簇间色散和簇间色散之和的比值(其中色散定义为距离平方和):
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.calinski_harabasz_score(X, labels)
优点:
1)当集群密集且分离良好时,得分更高,这与集群的标准概念有关。
2)得分计算得很快。
缺点:
凸簇的Calinski-Harabasz指数通常高于其他簇的概念,例如通过DBSCAN获得的基于密度的簇。
数学公式:
对于一组大小为 n E n_{E} nE 的数据 E E E ,将其聚类成簇,Calinski-Harabasz评分 s s s 定义为簇间离散平均值与簇内离散度之比:
s = t r ( B k ) t r ( W k ) × n E − k k − 1 s= \frac{tr(B_{k})}{tr(W_{k})}\times \frac{n_{E}-k}{k-1} s=tr(Wk