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的值表示重叠的集群。负值通常表明样本被分配到错误的集群,因为不同的集群更相似。

阅读更多的 User Guide .

参数:
X如果指标==,形状(n_samples_a,n_samples_a)的{类数组,稀疏矩阵} “预先计算”或(n_samples_a,n_features)否则

样本之间的成对距离数组,或特征数组。

labels形状类似阵列(n_samples,)

每个样本的预测标签。

metric字符串或可调用,默认='欧几里德'

计算要素数组中实例之间的距离时使用的指标。如果指标是字符串,则它必须是允许的选项之一 pairwise_distances .如果 X 是距离数组本身,使用 metric="precomputed" .

sample_sizeint,默认=无

在数据的随机子集上计算轮廓系数时使用的样本大小。如果 sample_size is None ,不使用抽样。

random_stateint,RandomState实例或无,默认=无

确定用于选择样本子集的随机数生成。时使用 sample_size is not None .传递int以获得跨多个函数调用的可重复结果。看到 Glossary .

**kwds可选关键字参数

任何进一步的参数都直接传递给距离函数。如果使用scipy.spatial.Distance指标,则参数仍然依赖于指标。有关使用示例,请参阅scipy文档。

返回:
silhouette浮子

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

引用

[1]

Peter J. Rousseeuw (1987). "Silhouettes: a Graphical Aid to the Interpretation and Validation of Cluster Analysis". Computational and Applied Mathematics 20: 53-65. <https://www.sciencedirect.com/science/article/pii/0377042787901257> _

[2]

Wikipedia entry on the Silhouette Coefficient <https://en.wikipedia.org/wiki/Silhouette_(clustering)> _

示例

>>> from sklearn.datasets import make_blobs
>>> from sklearn.cluster import KMeans
>>> from sklearn.metrics import silhouette_score
>>> X, y = make_blobs(random_state=42)
>>> kmeans = KMeans(n_clusters=2, random_state=42)
>>> silhouette_score(X, kmeans.fit_predict(X))
np.float64(0.49...)