silhouette_samples#
- sklearn.metrics.silhouette_samples(X, labels, *, metric='euclidean', **kwds)[源代码]#
计算每个样本的轮廓系数。
轮廓系数衡量样本与其自身相似的样本聚类效果如何。具有高轮廓系数的聚类模型被认为是密集的(同一簇中的样本彼此相似),并且分离良好(不同簇中的样本彼此不很相似)。
轮廓系数是使用每个样本的平均簇内距离(
a
)和平均最近簇距离(b
)计算的。样本的轮廓系数为(b - a) / max(a, b)
。请注意,轮廓系数仅在标签数量满足 2<= n_labels <= n_samples - 1
时定义。此函数返回每个样本的轮廓系数。
最佳值为 1,最差值为 -1。接近 0 的值表示簇重叠。
在用户指南中阅读更多内容。
- 参数:
- X{类数组, 稀疏矩阵} 形状为 (n_samples_a, n_samples_a) (如果 metric == “precomputed”) 或 (n_samples_a, n_features) (否则)
样本之间的成对距离数组,或特征数组。如果提供稀疏矩阵,应首选 CSR 格式以避免额外的复制。
- labels类数组, 形状为 (n_samples,)
每个样本的标签值。
- metric字符串或可调用对象, 默认为 'euclidean'
在特征数组中计算实例之间距离时使用的度量。如果 metric 是字符串,它必须是
pairwise_distances
允许的选项之一。如果X
本身就是距离数组,则使用“precomputed”作为度量。预计算的距离矩阵沿对角线必须为 0。- **kwds可选关键字参数
任何其他参数将直接传递给距离函数。如果使用
scipy.spatial.distance
度量,参数仍然依赖于度量本身。请参阅 scipy 文档以获取使用示例。
- 返回:
- silhouette类数组, 形状为 (n_samples,)
每个样本的轮廓系数。
参考文献
[2]示例
>>> from sklearn.metrics import silhouette_samples >>> from sklearn.datasets import make_blobs >>> from sklearn.cluster import KMeans >>> X, y = make_blobs(n_samples=50, random_state=42) >>> kmeans = KMeans(n_clusters=3, random_state=42) >>> labels = kmeans.fit_predict(X) >>> silhouette_samples(X, labels) array([...])