介绍:

聚类精确度(Cluster Accuracy,AC)用于比较获得标签和数据提供的真实标签:
AC=∑i=1nδ(si,map(ri))NAC = \frac{\sum_{i=1}^{n}\delta(s_i , map(r_i))}{N}AC=N∑i=1n​δ(si​,map(ri​))​
其中:rir_iri​为聚类后的标签。sis_isi​为真实标签。nnn为数据总的个数。δ\deltaδ表示指示函数,具体如下:
δ(x,y)={1ifx=y0otherwise\delta(x,y) = \begin{cases} 1 & if x=y \\ 0 & otherwise \end{cases}δ(x,y)={10​ifx=yotherwise​
而式中的map则表示最佳类标的重现分配,以确保统计的正确。一般的该最佳重分配可以通过匈牙利算法(Kuhn-Munkres or Hungarian Algorithm)实现,从而在多项式时间内求解该任务(标签)分配问题。

参考博客:[ML] 聚类评价指标

Python代码:

需要numpy和sklearn库。利用sklearn调用匈牙利算法
也可以直接调用scikit-learn库中的函数来计算metrics.accuracy_score(y_true, y_pred)

import numpy as np
from sklearn import metricsdef acc(y_true, y_pred):"""Calculate clustering accuracy. Require scikit-learn installed# Argumentsy: true labels, numpy.array with shape `(n_samples,)`y_pred: predicted labels, numpy.array with shape `(n_samples,)`# Returnaccuracy, in [0,1]"""y_true = y_true.astype(np.int64)assert y_pred.size == y_true.sizeD = max(y_pred.max(), y_true.max()) + 1w = np.zeros((D, D), dtype=np.int64)for i in range(y_pred.size):w[y_pred[i], y_true[i]] += 1from sklearn.utils.linear_assignment_ import linear_assignmentind = linear_assignment(w.max() - w)return sum([w[i, j] for i, j in ind]) * 1.0 / y_pred.sizeif __name__ == '__main__':# A为真实值、B,C,D为等效果的预测值 即: func(A,B)=func(A,C); func(B,D)=func(C,D);A = np.array([1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3])B = np.array([1, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 1, 3, 3, 3])C = np.array([2, 1, 2, 2, 2, 2, 2, 1, 1, 1, 1, 3, 2, 2, 3, 3, 3])  # 将B中的 1 与 2 互换D = np.array([1, 3, 1, 1, 1, 1, 1, 3, 3, 3, 3, 2, 1, 1, 2, 2, 2])  # 将B中的 2 与 3 互换# 测试print(acc(A, B))  # 0.7058823529411765print(acc(A, C))  # 0.7058823529411765print(metrics.accuracy_score(A, B))  # 0.7058823529411765print(acc(B, D))  # 1.0print(acc(C, D))  # 1.0

聚类精确度(Cluster Accuracy)相关推荐

  1. C语言实现聚类K-means cluster算法(附完整源码)

    聚类K-means cluster算法 实现聚类K-means cluster算法的完整源码(定义,实现,main函数测试) 实现聚类K-means cluster算法的完整源码(定义,实现,main ...

  2. Python,OpenCV中的K均值聚类——K-Means Cluster

    Python,OpenCV中的K均值聚类 1. 效果图 2. 原理 2.1 什么是K均值聚类? 2.2 K均值聚类过程 2.3 cv2.kmeans(z, 2, None, criteria, 10, ...

  3. 层次聚类sklearn.cluster包AgglomerativeClustering

    ** Ward策略:让所有类簇中的方差最小化. Maximum策略:也叫completed linkage(全连接策略),力求将类簇之间的距离最大值最小化. Average linkage策略:力求将 ...

  4. Python层次聚类sci.cluster.hierarchy.linkage函数详解

    1 函数原型: scipy.cluster.hierarchy.linkage(y, method='single', metric='euclidean', optimal_ordering=Fal ...

  5. 层次聚类(cluster.AgglomerativeClustering)并通过TSNE进行可视化分析

    单纯从层次聚类的角度来看,既有自顶向下,也有自底向上.从每一个样本一个聚类簇到所有样本一个聚类簇,或者所有样本是一个聚类簇到最后每一个样本都是一个聚类簇. 聚合层次聚类是一种自下而上的算法,首先将每个 ...

  6. 数据的聚类(cluster)|| 关联规则 || 回归

    分类与聚类的比较 聚类分析是研究如何在没有训练的条件下把样本划分为若干类. 在分类中,已知存在哪些类,即对于目标数据库中存在哪些类是知道的,要做的就是将每一条记录分别属于哪一类标记出来. 聚类需要解决 ...

  7. python 两阶段聚类_挑子学习笔记:两步聚类算法(TwoStep Cluster Algorithm)——改进的BIRCH算法...

    转载请标明出处:http://www.cnblogs.com/tiaozistudy/p/twostep_cluster_algorithm.html 两步聚类算法是在SPSS Modeler中使用的 ...

  8. SAS聚类分析(系统聚类cluster,动态聚类fastclus,变量聚类varclus)

    1. 从21各工厂抽了同类产品,每个产品检测了两个指标,测得的数据如下(已作了适当变换)欲将各厂产品的质量情况进行分类. No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  9. 层次聚类算法(hierarchial cluster)

    聚类算法 常见的聚类算法可以分为四类: 基于连通模型(connectivited-based):如层次聚类,按照对象之间的距离聚类.(距离的定义可以有很多种). 基于中心点(centroid-base ...

  10. 聚类算法评价指标python实现_[ML] 聚类评价指标

    本文将介绍几个常见的聚类评价指标: Purity, NMI, RI, Precision(查准率), Recall(查全率), F, ARI, Accuracy(正确率). 好的聚类算法,一般要求类簇 ...

最新文章

  1. C++ 中multiset 的使用
  2. 怎么用vc采集ni卡数据_智能水表读数怎么看?家用智能水表怎么安装?
  3. 子页面刷新父页面,避免弹出重复提交窗口
  4. 安装rlwrap 的简单方法,亲测好用
  5. js实现HTML标题栏中新消息提示效果
  6. Python各种推导式(列表推导式,字典推导式,集合推导式,嵌套列表推导式)
  7. 12c闪回 oracle_Oracle 12c R2新特性: PDB级闪回(Flashback PDB)
  8. dubbo接口统一异常处理的两种方式
  9. 数据科学20个最好的Python库
  10. 在QTP中巧用WebTable对象的ChildItem方法进行测试
  11. HttpWatch工具简介及使用技巧 (转自:卖烧烤的鱼)
  12. java实习找工作经历
  13. 【报告分享】2021全球自由行报告-中国旅游研究院马蜂窝(附下载)
  14. Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg. Error: open /proc/sel
  15. Redis 高级 Java 客户端 Lettuce 的用法及踩坑经验
  16. Day06_动态组件_插槽_自定义指令_tabbar案例
  17. mac os 系统升级到 Catalina 版本后出现应用打不开 ,闪退,意外退出问题
  18. Dev - C++ 安装(mac/windows)
  19. Android P(9.0) 证书加密算法变更
  20. 未明学院学员报告:「看电影攻略」之豆瓣电影票房与口碑分析,这几类电影不易踩雷!

热门文章

  1. python读取excel(xlrd)
  2. 软件构架 课堂练习一
  3. 分享安卓SD卡的后台设置
  4. RedHat Linux 5.2 网关及安全应用
  5. SpringBoot学习---SpringSecurity与Shiro
  6. 鸿蒙系统麒麟970芯片支持,受鸿蒙系统影响,众多华为手机或要说再见,包括麒麟970机型!...
  7. gamma分布_深度学习需要掌握的 13 个概率分布(含代码)
  8. linux筛选方式,使用grep实现精确过滤的五种方法
  9. java 图片处理_java图片处理功能介绍
  10. JavaScript学习笔记 及 JAVAScript优化