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,)

每个样本的轮廓系数。

参考文献

示例

>>> 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([...])