coding乐园

一生最忌见识短浅,故步自封。

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

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

定义
轮廓系数结合了凝聚度和分离度,其计算步骤如下:
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/u012679583/article/details/80316619
个人分类: machine learning
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭