Silhouette Score(轮廓系数)是用于评估聚类质量的指标之一。它衡量了数据点与同簇内其他点的相似度以及与最近簇的相似度之间的对比。
公式
对于一个数据点 i:
- a(i): 数据点 i 到同簇内其他点的平均距离(簇内不相似度)。
- b(i): 数据点 i到最近的其他簇中点的平均距离(簇间不相似度)。
- 轮廓系数计算公式:
- 其中:
- −1≤s(i)≤1
- s(i)≈1: 数据点聚类效果好,点接近同簇而远离其他簇。
- s(i)≈0: 数据点位于簇边界。
- s(i)≈−1: 数据点可能被错误分类到其他簇。
整体 Silhouette Score
对于整个数据集,Silhouette Score 是所有数据点 s(i) 的平均值,用于评价整个聚类的质量。
优点
应用场景
代码示例(使用 Python)
from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs# 生成样本数据
X, _ = make_blobs(n_samples=500, centers=4, cluster_std=0.7, random_state=42)# 使用 KMeans 聚类
kmeans = KMeans(n_clusters=4, random_state=42)
labels = kmeans.fit_predict(X)# 计算 Silhouette Score
score = silhouette_score(X, labels)
print("Silhouette Score:", score)