聚类评估算法-轮廓系数(Silhouette Coefficient )

轮廓系数(Silhouette Coefficient),是聚类效果好坏的一种评价方式。最早由 Peter J. Rousseeuw 在 1986 提出。它结合内聚度和分离度两种因素。可以用来在相同原始数据的基础上用来评价不同算法、或者算法不同运行方式对聚类结果所产生的影响。
方法:
1,计算样本i到同簇其他样本的平均距离ai。ai 越小,说明样本i越应该被聚类到该簇。将ai 称为样本i的簇内不相似度

簇C中所有样本的a i 均值称为簇C的簇不相似度。

2,计算样本i到其他某簇Cj 的所有样本的平均距离bij,称为样本i与簇Cj 的不相似度。定义为样本i的簇间不相似度:bi =min{bi1, bi2, …, bik}

bi越大,说明样本i越不属于其他簇

3,根据样本i的簇内不相似度a i 和簇间不相似度b i ,定义样本i的轮廓系数
在这里插入图片描述
4,判断:

si接近1,则说明样本i聚类合理;

si接近-1,则说明样本i更应该分类到另外的簇;

若si 近似为0,则说明样本i在两个簇的边界上。

所有样本的s i 的均值称为聚类结果的轮廓系数,是该聚类是否合理、有效的度量。

### 使用轮廓系数评估密度峰值聚类效果 对于密度峰值聚类算法轮廓系数提供了一种量化簇分离质量的方法。该指标通过计算每个样本到其所在簇内其他成员的距离平均值以及到最近邻簇成员距离的平均值来衡量集群的质量[^1]。 具体而言,在应用密度峰值聚类之后: - 对于每一个数据点 \( i \),定义两个量: - \( a(i) \): 数据点 \( i \) 到同一簇中所有其它点之间的平均距离; - \( b(i) \): 数据点 \( i \) 到下一个最近簇中的所有点之间最小的平均距离; - 计算单个观测的轮廓分数 \( s(i) \): \[s(i)=\frac{b(i)-a(i)}{\max(a(i),b(i))}\] 当 \( s(i)\approx 1 \) 表明此点很好地被分配到了合适的簇里;而如果 \( s(i)<0 \),则意味着这个点可能更应该属于另一个簇。最终整个模型的好坏可以通过求解所有个体得分的均值得出整体评价标准。 为了实现这一过程,可以采用如下 Python 代码片段来进行操作: ```python from sklearn.metrics import silhouette_score import numpy as np def evaluate_density_peak_clustering(data, labels): """ Evaluate density peak clustering using Silhouette Coefficient. Parameters: data (array-like): The input samples with shape (n_samples, n_features). labels (array-like): Predicted labels for each sample. Returns: float: Mean Silhouette Coefficient of all samples. """ # Ensure that there are at least two clusters to compare unique_labels = set(labels) if len(unique_labels) < 2 or any(label == -1 for label in unique_labels): raise ValueError("At least two non-noise clusters must exist.") score = silhouette_score(data, labels) return score if __name__ == "__main__": # Example usage X = [[...], [...]] # Input dataset here y_pred = [...] # Cluster assignments from Density Peak Clustering algorithm result = evaluate_density_peak_clustering(X, y_pred) print(f"The mean Silhouette Score is {result:.3f}") ``` 上述函数 `evaluate_density_peak_clustering` 接受输入的数据集及其对应的标签作为参数,并返回这些数据的整体轮廓系数评分。需要注意的是,只有当存在至少两个有效(即不是噪声)的簇时才能计算有效的轮廓系数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值