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的值表示重叠的簇。
更多信息请参阅 用户指南 。
- Parameters:
- X{array-like, sparse matrix} of shape (n_samples_a, n_samples_a) if metric == “precomputed” or (n_samples_a, n_features) otherwise
样本之间的成对距离数组,或特征数组。如果提供稀疏矩阵,应优先使用CSR格式以避免额外的复制。
- labelsarray-like of shape (n_samples,)
每个样本的标签值。
- metricstr or callable, default=’euclidean’
在特征数组中计算实例之间距离时使用的度量。如果metric是字符串,则必须是
pairwise_distances
允许的选项之一。 如果X
是距离数组本身,请使用”precomputed”作为度量。预计算的距离矩阵必须在对角线上为0。- **kwds可选的关键字参数
任何进一步的参数都直接传递给距离函数。如果使用
scipy.spatial.distance
度量,参数仍然是度量依赖的。请参阅scipy文档以获取使用示例。
- Returns:
- silhouettearray-like of shape (n_samples,)
每个样本的轮廓系数。
References
Examples
>>> 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([...])
Gallery examples#
使用轮廓分析选择KMeans聚类的簇数