调整兰德系数-评估聚类效果的指标

调整兰德系数(Adjusted Rand Index, ARI)是一种用于评估聚类结果与真实标签之间相似度的指标。它在传统兰德系数(Rand Index, RI)的基础上进行了调整,考虑了随机聚类的期望值,因此能够更公平地评估聚类结果。

调整兰德系数的计算步骤

1. 构建混淆矩阵

给定两个聚类结果:真实标签 ( T ) 和聚类标签 ( C ),构建一个混淆矩阵 ( M ),其中 ( M_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。

2. 计算组合数

  • ( a ):同属于一个簇且同属于一个真实类的样本对数。
  • ( b ):同属于一个簇但不属于一个真实类的样本对数。
  • ( c ):不属于一个簇但同属于一个真实类的样本对数。
  • ( d ):不属于一个簇且不属于一个真实类的样本对数。

3. 计算兰德系数

兰德系数 ( RI ) 的计算公式为:
[ RI = \frac{a + d}{a + b + c + d} ]

4. 计算调整兰德系数

调整兰德系数 ( ARI ) 的计算公式为:
[ ARI = \frac{\text{Index} - \text{Expected Index}}{\text{Max Index} - \text{Expected Index}} ]

其中:

  • (\text{Index} = a + d)
  • (\text{Expected Index}) 和 (\text{Max Index}) 的计算如下:

详细公式

混淆矩阵

假设有 ( n ) 个样本,真实标签 ( T ) 有 ( k ) 个类别,聚类标签 ( C ) 有 ( m ) 个簇。混淆矩阵 ( M ) 的元素 ( M_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。

组合数计算

[ a = \sum_{ij} \binom{M_{ij}}{2} ]

[ b = \sum_{i} \binom{\sum_{j} M_{ij}}{2} - a ]

[ c = \sum_{j} \binom{\sum_{i} M_{ij}}{2} - a ]

[ d = \binom{n}{2} - (a + b + c) ]

调整兰德系数计算

[ ARI = \frac{\sum_{ij} \binom{M_{ij}}{2} - \left[ \frac{\sum_{i} \binom{\sum_{j} M_{ij}}{2} \sum_{j} \binom{\sum_{i} M_{ij}}{2}}{\binom{n}{2}} \right]}{\frac{1}{2} \left[ \sum_{i} \binom{\sum_{j} M_{ij}}{2} + \sum_{j} \binom{\sum_{i} M_{ij}}{2} \right] - \left[ \frac{\sum_{i} \binom{\sum_{j} M_{ij}}{2} \sum_{j} \binom{\sum_{i} M_{ij}}{2}}{\binom{n}{2}} \right]} ]

示例计算

假设我们有以下数据:

真实标签 ( T ):[0, 0, 1, 1, 2, 2, 3, 3, 4, 4]
聚类标签 ( C ):[1, 1, 0, 0, 2, 2, 1, 1, 3, 3]

构建混淆矩阵:
[ M = \begin{bmatrix}
0 & 2 & 0 & 0\
2 & 0 & 0 & 0\
0 & 0 & 2 & 0\
0 & 2 & 0 & 0\
0 & 0 & 0 & 2
\end{bmatrix} ]

其中,( M_{ij} ) 表示真实标签为 ( i ) 且聚类标签为 ( j ) 的样本数量。

计算组合数:

( a ):同属于一个簇且同属于一个真实类的样本对数:

[ a = \sum_{ij} \binom{M_{ij}}{2} = \binom{2}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} = 1 + 1 + 1 + 1 + 1 = 5 ]

( b ):同属于一个簇但不属于一个真实类的样本对数:

[ b = \sum_{j} \binom{\sum_{i} M_{ij}}{2} - a = \left( \binom{4}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} \right) - 5 = (6 + 1 + 1 + 1) - 5 = 4 ]

( c ):不属于一个簇但同属于一个真实类的样本对数:

[ c = \sum_{i} \binom{\sum_{j} M_{ij}}{2} - a = \left( \binom{2}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} + \binom{2}{2} \right) - 5 = (1 + 1 + 1 + 1 + 1) - 5 = 0 ]

( d ):不属于一个簇且不属于一个真实类的样本对数:

[ d = \binom{n}{2} - (a + b + c) = \binom{10}{2} - (5 + 4 + 0) = 45 - 9 = 36 ]

计算兰德系数:

[ RI = \frac{a + d}{a + b + c + d} = \frac{5 + 36}{5 + 4 + 0 + 36} = \frac{41}{45} \approx 0.9111 ]

计算调整兰德系数:

期望指数 ( \text{Expected Index} ):

[ \text{Expected Index} = \frac{\left( \sum_{i} \binom{\sum_{j} M_{ij}}{2} \right) \left( \sum_{j} \binom{\sum_{i} M_{ij}}{2} \right)}{\binom{n}{2}} = \frac{5 \times 9}{45} = 1 ]

最大指数 ( \text{Max Index} ):

[ \text{Max Index} = \frac{1}{2} \left( \sum_{i} \binom{\sum_{j} M_{ij}}{2} + \sum_{j} \binom{\sum_{i} M_{ij}}{2} \right) = \frac{1}{2} (5 + 9) = 7 ]

调整兰德系数 ( ARI ):

[ ARI = \frac{\text{Index} - \text{Expected Index}}{\text{Max Index} - \text{Expected Index}} = \frac{41 - 1}{45 - 1} = \frac{40}{44} \approx 0.9091 ]

调整兰德系数示例

调整兰德系数(Adjusted Rand Index, ARI)是一种用于评估聚类结果与真实标签之间一致性的指标。它考虑了聚类中的随机性,提供了一个校正后的分数,使得即使在随机标签的情况下,ARI的期望值也接近于零。

调整兰德系数的计算

调整兰德系数的公式如下:

A R I = R I − E [ R I ] max ⁡ ( R I ) − E [ R I ] ARI = \frac{{RI - E[RI]}}{{\max(RI) - E[RI]}} ARI=max(RI)E[RI]RIE[RI]

其中,RI 是兰德系数(Rand Index), E [ R I ] E[RI] E[RI] 是期望的兰德系数。

示例

假设我们有一个包含真实标签和聚类结果的数据集。我们将使用 sklearn 库来计算调整兰德系数。

示例数据

from sklearn.metrics import adjusted_rand_score# 真实标签
true_labels = [0, 0, 1, 1, 2, 2, 3, 3]# 聚类结果 1
cluster_labels_1 = [0, 0, 1, 1, 2, 2, 3, 3]# 聚类结果 2
cluster_labels_2 = [0, 0, 1, 1, 3, 3, 2, 2]# 聚类结果 3
cluster_labels_3 = [0, 1, 0, 1, 2, 3, 2, 3]# 计算调整兰德系数
ari_1 = adjusted_rand_score(true_labels, cluster_labels_1)
ari_2 = adjusted_rand_score(true_labels, cluster_labels_2)
ari_3 = adjusted_rand_score(true_labels, cluster_labels_3)print(f"ARI for cluster_labels_1: {ari_1:.2f}")
print(f"ARI for cluster_labels_2: {ari_2:.2f}")
print(f"ARI for cluster_labels_3: {ari_3:.2f}")

输出结果

ARI for cluster_labels_1: 1.00
ARI for cluster_labels_2: 0.57
ARI for cluster_labels_3: 0.00解释
ARI for cluster_labels_1: 1.00
这个结果表明聚类结果与真实标签完全一致,调整兰德系数为1,表示完美匹配。ARI for cluster_labels_2: 0.57
这个结果表明聚类结果与真实标签有一定的一致性,但并不完美。调整兰德系数为0.57,表示中等的一致性。ARI for cluster_labels_3: 0.00
这个结果表明聚类结果与真实标签几乎没有一致性,调整兰德系数为0,表示随机分配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/53792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Chainlit集成Langchain并使用通义千问实现文生图网页应用

前言 本文教程如何使用通义千问的大模型服务平台的接口,实现图片生成的网页应用,主要用到的技术服务有,chainlit 、 langchain、 flux。合利用了大模型的工具选择调用能力。实现聊天对话生成图片的网页应用。 阿里云 大模型服务平台百炼 API…

最新融合多模态的理解和生成的大一统transform架构,show-o模型部署

Show-o是由字节跳动和新加坡国立大学Show Lab共同研发的一个多模态大模型,统一了多模态理解和生成。 Show-o的创新之处在于它将自回归和离散扩散建模相结合,以适应不同和混合模态的输入和输出。 Show-o模型的架构基于预训练的大型语言模型(…

web基础之SSRF

1、内网访问 题目提示:访问位于127.0.0.1的flag.php;直接利用ssrf漏洞访问?url127.0.0.1/flag.php 2、伪协议读取文件 (1)题目提示:尝试去读取一下Web目录下的flag.php吧 (2)什么是伪协议&a…

【星海出品】go语言环境兼install

官网 https://golang.google.cn/dl/ go的安装包下载地址 https://go.dev/dl/ set GO111MODULEon //是否以Go modules的模式运行项目 auto,on,off set GOARCHamd64 //目标可执行程序操作系统构架 包括 386,amd64,arm set GOBIN //项目的第三方可执行文件目…

【鸿蒙】HarmonyOS NEXT星河入门到实战6-组件化开发-样式结构重用常见组件

目录 1、Swiper轮播组件 1.1 Swiper基本用法 1.2 Swiper的常见属性 1.3 Swiper的样式自定义 1.3.1 基本语法 1.3.2 案例小米有品 2、样式&结构重用 2.1 Extend:扩展组件(样式、事件) 2.2 Styles:抽取通用属性、事件 2.3 Builder:自定义构建函数(结构、样式、事…

Android 11(API 级别 30)及以上版本中,将Bitmap保存到设备上

调用 saveBitmapToMediaStore(getContentResolver(),bitmap,“图片名”,mimeType); 参数解析: Bitmap myBitmap ...; // 这里应该是你获取或创建Bitmap的代码 private String mimeType "image/jpeg"; // 或者"image/png",取决于…

无人机视角-道路目标检测数据集 航拍 8600张 voc yolo

数据集名称: 无人机视角-道路目标检测数据集 数据集规模: 图像数量:8600张拍摄方式:航拍(使用无人机拍摄)标注格式:支持VOC和YOLO格式 数据集内容: 该数据集由无人机从空中拍摄的…

Android10源码刷入Pixel2以及整合GMS

一、ASOP源码下载 具体可以参考我之前发布的文章 二、下载相关驱动包 这一步很关键,关系到编译后的镜像能否刷入后运行 下载链接:Nexus 和 Pixel 设备的驱动程序二进制文件 如下图所示,将两个驱动程序上传到Ubuntu服务器,并进行解压,得到两个脚本: 下载解压后会有两…

5.qml 如何管理好控制台打印输出

c 在工程文件里面加入,这个只是禁用了c端的打印 DEFINES QT_NO_WARNING_OUTPUT DEFINES QT_NO_DEBUG_OUTPUT qml 在pro里面添加 #CONFIG - declarative_debug #CONFIG - qml_debug DEFINES QT_QML_DEBUG_NO_WARNING禁用qml打印,在main.cpp中引入 qputenv…

git为不同的项目设置不同的提交作者

方法1:找到项目的.git文件夹打开 打开config在下面添加自己作者信息 [user]name 作者名email 邮箱方法2:直接在.git文件夹设置作者名(不使用–global参数) git config user.name "xxxxx"如果想要修改之前提交的…

【idea-安装】

JetBrains官⽹ : https://www.jetbrains.com/ 1.下载idea安装包,下载旧一些的版本,避免新版本的不稳定。 下载下来的安装包是exe格式的,直接点击运行。 点击Next 2.选择要下载的位置,点击下一步。 3.选择⽣成快捷⽅式和建⽴⽂件…

uniapp数据缓存和发起网络请求

数据缓存 uni.onStorageSync同步的方式将数据存储到本地缓存 <template><button click"onStorageSync()">存储数据</button> </template><script setup>const onStorageSync () > {// 存储数据uni.setStorageSync(username, 张三)…

Liunx常用指令

1. 文件和目录管理 ls 用法&#xff1a;ls [选项] [文件/目录]示例&#xff1a;ls -l&#xff08;以长列表格式显示&#xff09;&#xff0c;ls -a&#xff08;显示所有文件&#xff0c;包括隐藏文件&#xff09;。 cd 用法&#xff1a;cd [目录]示例&#xff1a;cd ..&#xf…

刷题活动(旋转和翻转)

前两天打了CCPC网络赛&#xff08;让打老实了&#xff09;&#xff0c;现在认识到了刷题的重要性&#xff0c;于是我开创了这么个栏目&#xff0c;我们一起刷一下题。 还是在ACwing网站上刷题 旋转和翻转 首先&#xff0c;申一下题目&#xff0c;输入一个数字 n &#xff0c;来…

【堆的应用--C语言版】

前面一节我们都已将堆的结构&#xff08;顺序存储&#xff09;已经实现&#xff0c;对树的相关概念以及知识做了一定的了解。其中我们在实现删除操作和插入操作的时候&#xff0c;我们还同时实现了建大堆&#xff08;小堆&#xff09;的向上&#xff08;下&#xff09;调整算法…

JVM 调优篇2 jvm的内存结构以及堆栈参数设置与查看

一 jvm的内存模型 2.1 jvm内存模型概览 2.2 pc计数器 它是一块很小的内存空间&#xff0c;集合可以忽略不记&#xff0c;也是运行速度最快的存储区域。不会随着程序的运行需要更大的空间。 在jvm规范中&#xff0c;每个线程都有它自己的程序计数器&#xff0c;是线程私有的&…

DIC技术助力新能源汽车主机厂力学测试研发与整车性能提升

在新能源汽车研发过程中&#xff0c;非接触式全视场应变DIC测量方案&#xff0c;越来越受到汽车主机厂的信赖与认可。传统接触式传感器&#xff0c;在精度、灵活性和数据处理能力上存在局限。DIC技术可提供精确、高效、全视场、便捷的非接触式测量解决方案。 在汽车研发阶段&a…

C语言知识体系思维导图

为了更清晰地描述C语言知识体系&#xff0c;笔者用一个结构化的思维导图来概括其主要组成部分。见下&#xff1a; 这个思维导图旨在提供一个全面而系统的视角&#xff0c;帮助学习者逐步构建扎实的C语言知识体系。随着学习的深入&#xff0c;可以根据个人兴趣和职业需求&#x…

《Diffusion Models Without Attention》CVPR2024

摘要 这篇论文探讨了在高保真图像生成领域&#xff0c;去噪扩散概率模型&#xff08;Denoising Diffusion Probabilistic Models, DDPMs&#xff09;的重要性。尽管DDPMs在捕捉复杂视觉分布方面表现出色&#xff0c;但在高分辨率图像生成上面临显著的计算挑战。现有的方法&…

计算机毕业设计 《计算机基础》网上考试系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…