sklearn.metrics.silhouette_score

sklearn.metrics.silhouette_score(X, labels, *, metric='euclidean', sample_size=None, random_state=None, **kwds)

源码

计算所有样本的平均轮廓系数。

使用每个样本的平均集群内距离(a)和平均最近集群距离(b)计算轮廓系数。样本的轮廓系数为(b-a)/ max(a,b)。为了明确起见,b是样本与该样本不属于的最近群集之间的距离。请注意,仅当标签数为2 <= n_labels <= n_samples-1时,才定义轮廓系数。

此函数返回所有样本的平均轮廓系数。要获取每个样本的值,请使用silhouette_samples

最佳值为1,最差值为-1。接近0的值表示重叠的群集。负值通常表示样本已分配给错误的聚类,因为另一个聚类更为相似。

用户指南中阅读更多内容。

参数 说明
X array [n_samples_a, n_samples_a] if metric == “precomputed”, or, [n_samples_a, n_features] otherwise
样本之间的成对距离数组或特征数组。
labels array, shape = [n_samples]
每个样本的预测标签。
metric string, or callable
计算特征阵列中实例之间的距离时使用的度量。如果metric是字符串,则它必须是metrics.pairwise.pairwise_distances允许的选项之一。如果X是距离数组本身,则使用metric="precomputed"。
sample_size int or None
在数据的随机子集上计算轮廓系数时要使用的样本大小。如果sample_size为None,则不使用采样。
random_state int, RandomState instance or None, optional (default=None)
确定用于选择样本子集的随机数生成。当sample_size不为None时使用。在多个函数调用之间传递int以获得可重复的结果。请参阅词汇表
**kwds optional keyword parameters
任何其他参数都直接传递给距离函数。如果使用scipy.spatial.distance度量,则参数仍取决于度量。有关用法示例,请参见scipy文档。
返回值 说明
silhouette float
所有样本的平均轮廓系数。

参考

1 Peter J. Rousseeuw (1987). “Silhouettes: a Graphical Aid to the Interpretation and Validation of Cluster Analysis”. Computational and Applied Mathematics 20: 53-65.

2 Wikipedia entry on the Silhouette Coefficient