python实现六大分群质量评估指标(兰德系数、互信息、轮廓系数)

1 R语言中的分群质量——轮廓系数

因为先前惯用R语言,那么来看看R语言中的分群质量评估,节选自笔记︱多种常见聚类模型以及分群质量评估(聚类注意事项、使用技巧):

没有固定标准,一般会3-10分群。或者用一些指标评价,然后交叉验证不同群的分群指标。

一般的指标:轮廓系数silhouette(-1,1之间,值越大,聚类效果越好)(fpc包),兰德指数rand;R语言中有一个包用30种方法来评价不同类的方法(NbClust),但是速度较慢

商业上的指标:分群结果的覆盖率;分群结果的稳定性;分群结果是否从商业上易于理解和执行

轮廓系数旨在将某个对象与自己的簇的相似程度和与其他簇的相似程度进行比较。轮廓系数最高的簇的数量表示簇的数量的最佳选择。



一般来说,平均轮廓系数越高,聚类的质量也相对较好。在这,对于研究区域的网格单元,最优聚类数应该是2,这时平均轮廓系数的值最高。但是,聚类结果(k=2)的
SSE 值太大了。当 k=6 时,SEE 的值会低很多,但此时平均轮廓系数的值非常高,仅仅比 k=2 时的值低一点。因此,k=6
是最佳的选择。

2 python中的分群质量

主要参考来自官方文档:Clustering

部分内容来源于:机器学习评价指标大汇总

个人比较偏好的三个指标有:Calinski-Harabaz Index(未知真实index的模型评估)、Homogeneity,
completeness and V-measure(聚类数量情况)、轮廓系数

1.1 Adjusted Rand index 调整兰德系数



>>> from sklearn
import metrics

>>> labels_true = [0,
0, 0, 1, 1, 1]

>>> labels_pred = [0,
0, 1, 1, 2, 2]



>>>
metrics.adjusted_rand_score(labels_true, labels_pred)
 

0.24

1.2 Mutual Information based scores 互信息



Two different normalized versions of this measure are available,
Normalized Mutual Information(NMI) and Adjusted Mutual
Information(AMI). NMI is often used in the literature while AMI was
proposed more recently and is normalized against chance:



>>> from sklearn
import metrics

>>> labels_true = [0,
0, 0, 1, 1, 1]

>>> labels_pred = [0,
0, 1, 1, 2, 2]



>>>
metrics.adjusted_mutual_info_score(labels_true, labels_pred)
 

0.22504

  

1.3 Homogeneity, completeness and V-measure

同质性homogeneity:每个群集只包含单个类的成员。

完整性completeness:给定类的所有成员都分配给同一个群集。

>>> from sklearn
import metrics

>>> labels_true = [0,
0, 0, 1, 1, 1]

>>> labels_pred = [0,
0, 1, 1, 2, 2]



>>>
metrics.homogeneity_score(labels_true, labels_pred)
 

0.66...



>>>
metrics.completeness_score(labels_true, labels_pred)

0.42...

两者的调和平均V-measure:

>>>
metrics.v_measure_score(labels_true,
labels_pred)  
 

0.51...

1.4 Fowlkes-Mallows scores

The Fowlkes-Mallows score FMI is defined as the geometric mean of
the pairwise precision and recall:



>>> from sklearn
import metrics

>>> labels_true = [0,
0, 0, 1, 1, 1]

>>> labels_pred = [0,
0, 1, 1, 2, 2]

>>>

>>>
metrics.fowlkes_mallows_score(labels_true, labels_pred)
 

0.47140...

1.5 Silhouette Coefficient 轮廓系数



>>> import numpy as
np

>>> from
sklearn.cluster import KMeans

>>> kmeans_model =
KMeans(n_clusters=3, random_state=1).fit(X)

>>> labels =
kmeans_model.labels_

>>>
metrics.silhouette_score(X, labels, metric='euclidean')

...                                                    
 

0.55...

1.6 Calinski-Harabaz Index

这个计算简单直接,得到的Calinski-Harabasz分数值ss越大则聚类效果越好。Calinski-Harabasz分数值ss的数学计算公式是:



 也就是说,类别内部数据的协方差越小越好,类别之间的协方差越大越好,这样的Calinski-Harabasz分数会高。

 在scikit-learn中, Calinski-Harabasz
Index对应的方法是metrics.calinski_harabaz_score.

在真实的分群label不知道的情况下,可以作为评估模型的一个指标。

同时,数值越小可以理解为:组间协方差很小,组与组之间界限不明显。

与轮廓系数的对比,笔者觉得最大的优势:快!相差几百倍!毫秒级

>>> import numpy as
np

>>> from
sklearn.cluster import KMeans

>>> kmeans_model =
KMeans(n_clusters=3, random_state=1).fit(X)

>>> labels =
kmeans_model.labels_

>>>
metrics.calinski_harabaz_score(X, labels)  

560.39...

python实现六大分群质量评估指标(兰德系数、互信息、轮廓系数)的更多相关文章

  1. 社区发现的3个评估指标:标准化互信息NMI,ARI指标,以及模块度(modularity)

    转载请注明出处:http://www.cnblogs.com/bethansy/p/6890972.html 一.已知真实社区划分结果 1.NMI指数,互信息和标准化互信息 具体公式和matlab代码 ...

  2. Python机器学习笔记:常用评估指标的用法

    在机器学习中,性能指标(Metrics)是衡量一个模型好坏的关键,通过衡量模型输出y_predict和y_true之间的某种“距离”得出的. 对学习器的泛化性能进行评估,不仅需要有效可行的试验估计方法 ...

  3. 用K-Means聚类分析做客户分群

    聚类指的是把集合,分组成多个类,每个类中的对象都是彼此相似的.K-means是聚类中最常用的方法之一,它是基于点与点距离的相似度来计算最佳类别归属. 在使用该方法前,要注意(1)对数据异常值的处理:( ...

  4. 【机器学习】--模型评估指标之混淆矩阵,ROC曲线和AUC面积

    一.前述 怎么样对训练出来的模型进行评估是有一定指标的,本文就相关指标做一个总结. 二.具体 1.混淆矩阵 混淆矩阵如图:  第一个参数true,false是指预测的正确性.  第二个参数true,p ...

  5. 评估指标:准确率(Precision)、召回率(Recall)以及F值(F-Measure)

    为了能够更好的评价IR系统的性能,IR有一套完整的评价体系,通过评价体系可以了解不同信息系统的优劣,不同检索模型的特点,不同因素对信息检索的影响,从而对信息检索进一步优化. 由于IR的目标是在较短时间 ...

  6. 客户主题分析(tableau)—客户分群

    主要分析方面:客户合理分群 客户分群实现:使用聚类构建指标,需理解聚类的分析逻辑,需使用软件:tableau 聚类方法:选择3指标分别为购买总金额,客户购买次数.类平均购买价格(四类的平均购买价格,四 ...

  7. 【Model Log】模型评估指标可视化,自动画Loss、Accuracy曲线图工具,无需人工参与!

    1. Model Log 介绍 Model Log 是一款基于 Python3 的轻量级机器学习(Machine Learning).深度学习(Deep Learning)模型训练评估指标可视化工具, ...

  8. python脚本实现集群检测和管理

    python脚本实现集群检测和管理 场景是这样的:一个生产机房,会有很多的测试机器和生产机器(也就是30台左右吧),由于管理较为混乱导致了哪台机器有人用.哪台机器没人用都不清楚,从而产生了一个想法-- ...

  9. 聚类结果的评估指标及其JAVA实现

    一. 前言 又GET了一项技能.在做聚类算法的时候,由于要评估所提出的聚类算法的好坏,于是需要与一些已知的算法对比,或者用一些人工标注的标签来比较,于是用到了聚类结果的评估指标.我了解了以下几项. 首 ...

随机推荐

  1. 《DSP using MATLAB》Problem 8.19

    代码: %% ------------------------------------------------------------------------ %% Output Info about ...

  2. Python学习day25-面向对象之组合,多态和封装

    figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...

  3. Django项目: 4.用户登录登出功能

    用户登录登出功能 一.功能需求分析 1. 登录退出功能分析 流程图 功能 登录页面 登录功能 退出功能 二.登录页面 1. 接口设计 接口说明 类目 说明 请求方法 GET url定义 /user/l ...

  4. kafka数据祸福和failover

    k CAP帽子理论. consistency:一致性 Availability:可用性 partition tolerance:分区容忍型 CA :mysql oracle(抛弃了网络分区) CP:h ...

  5. 2019-2-13-Latex-论文elsevier,手把手如何用Latex写论文

    title author date CreateTime categories Latex 论文elsevier,手把手如何用Latex写论文 lindexi 2019-02-13 10:38:20 ...

  6. 全面解析Spring中@ModelAttribute注解的用法

    本文不再更新,可能存在内容过时的情况,实时更新请移步我的新博客:全面解析Spring中@ModelAttribute注解的用法: @ModelAttribute注解用于将方法的参数或方法的返回值绑定到 ...

  7. grant

    # 添加超级用户 grant all privileges on *.* to 'dump_tmp'@'10.10.10.10' identified by 'dump_tmp'; grant all ...

  8. Python :route的用法以及Http方法

    现代 Web 应用的 URL 十分优雅,易于人们辨识记忆,这一点对于那些面向使用低速网络连接移动设备访问的应用特别有用.如果可以不访问索引页,而是直接访问想要的那个页面,他们多半会笑逐颜开而再度光顾. ...

  9. 阿里云 Aliplayer高级功能介绍(六):进度条标记

    基本介绍 Aliplayer在进度条上提示时间和缩略图功能外,还可以进行视频内容的提示打点,当然不止是进度条上显示打点的内容,还提供一组接口,方便用户进行打点时间和内容的获取, 基本UI如下图所示: ...

  10. html常用标签详解3-a标签

    a标签 1.a标签的属性 a标签属于行内元素标签,双标签<a></a> href:a标签的跳转地址 target:打开方式(_self自身:_blank:新窗口) title: ...