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