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的值表示重叠的簇。负值通常表示样本被分配到了错误的簇,因为另一个簇更相似。
更多信息请参阅 用户指南 。
- Parameters:
- X{array-like, sparse matrix},形状为 (n_samples_a, n_samples_a) 如果 metric == “precomputed” 或 (n_samples_a, n_features) 否则
样本之间的成对距离数组,或特征数组。
- labelsarray-like,形状为 (n_samples,)
每个样本的预测标签。
- metricstr 或 callable,默认=’euclidean’
在特征数组中计算实例之间距离时使用的度量。如果 metric 是字符串,则必须是
pairwise_distances
允许的选项之一。如果X
是距离数组本身,请使用metric="precomputed"
。- sample_sizeint,默认=None
在数据的随机子集上计算轮廓系数时使用的样本大小。 如果
sample_size is None
,则不使用采样。- random_stateint, RandomState 实例或 None,默认=None
确定用于选择样本子集的随机数生成。 当
sample_size is not None
时使用。 传递一个 int 以在多次函数调用中获得可重复的结果。 请参阅 术语表 。- **kwds可选的关键字参数
任何进一步的参数都直接传递给距离函数。 如果使用 scipy.spatial.distance 度量,参数仍然是度量依赖的。请参阅 scipy 文档以获取使用示例。
- Returns:
- silhouettefloat
所有样本的平均轮廓系数。
References
Examples
>>> 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...
Gallery examples#
DBSCAN聚类算法演示
亲和传播聚类算法示例
使用轮廓分析选择KMeans聚类的簇数
手写数字数据上的K-Means聚类演示
使用k-means聚类文本文档