机器学习数据分析之-轮廓系数(评估聚类结果)

在学习使用k-means算法进行负载聚类分析时看到了这样的图,查了之后是用轮廓系数来评估分类结果的准确度或者称合适度。
这里写图片描述

silhouette 是一个衡量一个结点与它属聚类相较于其它聚类的相似程度。
取值范围-1到1,值越大表明这个结点更匹配其属聚类而不与相邻的聚类匹配。
如果大多数结点都有很高的silhouette value,那么聚类适当。若许多点都有低或者负的值,说明分类过多或者过少。
定义
轮廓系数结合了凝聚度和分离度,其计算步骤如下:
1.对于第i个对象,计算它到所属簇中所有其他对象的平均距离,记为ai(体现凝聚度)
2.对于第i个对象和不包含该对象的任意簇,记为bi(体现分离度)
3.第i个对象的轮廓系数为si=(bi-ai)/max(ai,bi)
scikit-learn 中的轮廓系数
对应 scikit-learn 方法是 sklearn.metrics.silhouette_score。该方法是计算所有样本的平均值,另一个方法 silhouette_samples 会返回所有样本的轮廓系数。在文档中提到,轮廓系数需要聚类数大于2,小于(样本数-1)。方法包括几个参数,最终返回一个 float 的轮廓系数,通常是在全部样本上的。

X:二维样本,通常为[n_samples, n_features],当 metric 设置为”precomputed”时,应为[n_samples, n_samples]方阵
labels:一维矩阵,每个样本所属簇的 label
metric:预计算”precomputed”,或者为一个可调用的函数计算两个实例之间的距离。如果为 string,则必须是metrics.pairwise.pairwise_distances 中 metric 可选的(‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’ 或‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’)——好多啊。
sample_size:随机取样一部分计算平均值,int 类型
random_state:当sample_size 为非空时用来生成随机采样。给定一个种子,或者使用 numpy.RandomState
**kwds:其他可选的 key-value 参数

参考
http://buptguo.com/2016/05/31/learn-ml-from-scikit-learn-silhouette-analysis/
https://blog.csdn.net/u014470581/article/details/51166758

  • 11
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值