silhouette_score#
- sklearn.metrics.silhouette_score(X, labels, *, metric='euclidean', sample_size=None, random_state=None, **kwds)[source]#
计算所有样本的平均 Silhouette 系数。
轮廓系数是利用每个样本的平均簇内距离(
a)和平均最近簇距离(b)计算得出的。样本的轮廓系数为(b - a) / max(a, b)。需要说明的是,b是样本与样本不属于的最近簇之间的距离。请注意,轮廓系数仅在标签数量2 <= n_labels <= n_samples - 1时定义。此函数返回所有样本的平均轮廓系数。要获取每个样本的值,请使用
silhouette_samples。最佳值为 1,最差值为 -1。接近 0 的值表示簇重叠。负值通常表示样本被分配到了错误的簇,因为另一个簇更相似。
在用户指南中了解更多信息。
- 参数:
- X{array-like, sparse matrix} of shape (n_samples_a, n_samples_a) if metric == “precomputed” or (n_samples_a, n_features) otherwise
样本之间的成对距离数组,或特征数组。
- labels形状为 (n_samples,) 的类数组
每个样本的预测标签。
- metricstr or callable, default=’euclidean’
用于计算特征数组中实例之间距离的度量标准。如果 metric 是字符串,它必须是
pairwise_distances允许的选项之一。如果X本身就是距离数组,请使用metric="precomputed"。- sample_sizeint, default=None
当在数据的随机子集上计算轮廓系数时,使用的样本大小。如果
sample_size is None,则不使用采样。- random_stateint, RandomState instance or None, default=None
确定用于选择样本子集的随机数生成。当
sample_size is not None时使用。传入一个整数可以在多次函数调用中获得可重现的结果。参见词汇表。- **kwdsoptional keyword parameters
任何额外的参数将直接传递给距离函数。如果使用 scipy.spatial.distance 度量标准,参数仍然取决于度量标准。请参阅 scipy 文档以获取使用示例。
- 返回:
- silhouettefloat
所有样本的平均轮廓系数。
References
示例
>>> 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)) 0.49...