silhouette_samples#
- sklearn.metrics.silhouette_samples(X, labels, *, metric='euclidean', **kwds)[source]#
计算每个样本的 Silhouette 系数。
轮廓系数(Silhouette Coefficient)用于衡量样本与其自身所属簇中其他样本的聚类效果。轮廓系数高的聚类模型通常被认为具有良好的密集性(同一簇内的样本彼此相似)和良好的分离性(不同簇之间的样本不相似)。
轮廓系数的计算方式为:对于每个样本,使用其簇内平均距离(
a)和平均最近簇距离(b)。样本的轮廓系数为(b - a) / max(a, b)。请注意,只有当标签数量满足2 <= n_labels <= n_samples - 1时,轮廓系数才有定义。此函数返回每个样本的轮廓系数。
最佳值为 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
样本间的成对距离数组,或特征数组。如果提供了稀疏矩阵,应优先使用 CSR 格式以避免额外的拷贝。
- labels形状为 (n_samples,) 的类数组
每个样本的标签值。
- metricstr or callable, default=’euclidean’
在特征数组中计算实例间距离时使用的度量标准。如果 metric 是字符串,则必须是
pairwise_distances所允许的选项之一。如果X本身是距离数组,请使用“precomputed”作为度量标准。预计算的距离矩阵的对角线必须为 0。- **kwdsoptional keyword parameters
任何其他参数都将直接传递给距离函数。如果使用
scipy.spatial.distance度量,参数仍取决于度量标准。有关用法示例,请参阅 scipy 文档。
- 返回:
- silhouettearray-like of shape (n_samples,)
每个样本的轮廓系数。
References
示例
>>> 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([...])