ucinet计算聚类系数大于1怎么办_聚类性能评估-ARI(调兰德指数)

9d353a090c7a21e59c948fc3a093a6bf.png

注意:ARI取值范围为[-1,1],值越大越好,反映两种划分的重叠程度,使用该度量指标需要数据本身有类别标记。

用C表示实际的类别划分,K表示聚类结果。定义a 为在C中被划分为同一类,在K中被划分为同一簇的实例对数量定义b为在C中被划分为不同类别,在K中被划分为不同簇的实例对数量。定义Rand Index(兰德系数):

564b727e5685ff324bd634a62433f3a7.png

Rand Index无法保证随机划分的聚类结果的RI值接近0。于是,提出了Adjusted Rand index(调节的兰德系数):

9f4309fcb43fb70e2bc830e4d9397fbe.png

为了计算ARI的值,引入contingency table(列联表),反映实例类别划分与聚类划分的重叠程度,表的行表示实际划分的类别,表的列表示聚类划分的簇标记,nij表示重叠实例数量,如下所示:

b552401d2c2d5d32b80869ccf8bcdbab.png

有了列联表,即可用它计算ARI:

b3faf1be60e98a46d3e0baf0d2512395.png

这里,显然把max(RI)替换成了mean(RI)。

还是看个例子吧,

例:设实际类别划分为labels_true = [0, 0, 0, 1, 1, 1],聚类划分为labels_pred = [0, 0, 1, 1, 2, 2],求ARI值。

画划分图:

d0a27eb0372833c1cbae01263e1a2609.png

画列联表:

7a98d63c3e20022587d5c0f42671bbfd.png

477875a19898e4567a9349e45973f653.png

看看sklearn中如何计算吧,https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/metrics/cluster/_supervised.py 文件中的adjusted_rand_score方法。

labels_true, labels_pred = check_clusterings(labels_true, labels_pred)
n_samples = labels_true.shape[0]
n_classes = np.unique(labels_true).shape[0]
n_clusters = np.unique(labels_pred).shape[0]# Special limit cases: no clustering since the data is not split;
# or trivial clustering where each document is assigned a unique cluster.
# These are perfect matches hence return 1.0.
if (n_classes == n_clusters == 1 orn_classes == n_clusters == 0 orn_classes == n_clusters == n_samples):
return 1.0# Compute the ARI using the contingency data
contingency = contingency_matrix(labels_true, labels_pred, sparse=True)
sum_comb_c = sum(_comb2(n_c) for n_c in np.ravel(contingency.sum(axis=1)))
sum_comb_k = sum(_comb2(n_k) for n_k in np.ravel(contingency.sum(axis=0)))
sum_comb = sum(_comb2(n_ij) for n_ij in contingency.data)prod_comb = (sum_comb_c * sum_comb_k) / _comb2(n_samples)
mean_comb = (sum_comb_k + sum_comb_c) / 2.
return (sum_comb - prod_comb) / (mean_comb - prod_comb)

运行一下看看结果吧:

# coding:utf-8
"""
测试ARI聚类评测指标
"""from sklearn import metricslabels_true = [0, 0, 0, 1, 1, 1]
labels_pred = [0, 0, 1, 1, 2, 2]print(metrics.adjusted_rand_score(labels_true, labels_pred))0.24242424242424246

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

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

相关文章

这才是未来真正的风口,一文看清13种硬科技投资趋势

来源:资本实验室如果非要说“风口”,那么在未来10年乃至20年,硬科技就是最大的风口。近期,由麻省理工学院创建的非盈利投资机构The Engine与投资研究机构Pitchbook联合发布了一份名为《2019硬科技图景》的研究报告。该报告将硬科技…

sleep(),wait(),yield(),notify()

sleep(),wait(),yield() 的区别 sleep方法和yield方法是Thread类的方法,wait方法是Object的方法。 sleep 方法使当前运行中的线程睡眼一段时间,进入不可运行状态,这段时间的长短是由程序设定的,不会释放锁标…

mysql 滚屏查看查询结果_MySQL_查询操作(select)

查询操作1、别名查询select id 序号,name名字from test_1209ryc;2、条件查询(between)select * from test_1209ryc where id between 2 and 5;3、条件查询(in)select * from test_1209ryc where id in(1,2,3);4、子查询select * from test_1209ryc where id in (select id from…

new arraylist内存_如何避免内部类中的内存泄漏

我先假设读者已经熟悉在Java代码中使用嵌套类的基础知识。在本文里,我将展示嵌套类的陷阱,内部类在JVM中引起内存泄漏和内存不足错误的地方。之所以会发生这种类型的内存泄漏,是因为内部类必须始终能够访问其外部类。从简单的嵌套过程到内存不…

git stash简介

原文:http://gitbook.liuhui998.com/4_5.html 一、基本操作当你正在做一项复杂的工作时, 发现了一个和当前工作不相关但是又很讨厌的bug. 你这时想先修复bug再做手头的工作, 那么就可以用 git stash 来保存当前的工作状态, 等你修复完bug后,执行反储藏(unstash)操作…

马斯克:“星链”卫星已能提供服务

来源:一财网美国太空探索技术公司首席执行官埃隆马斯克22日称,该公司发射的“星链”卫星已能提供天基互联网服务。马斯克当天在社交媒体推特上发布的一条推文中说,“正在通过‘星链’卫星发送这条推文”。2分钟后,他发推文表示&am…

python dict遍历_python 字典(dict)遍历的四种方法性能测试报告

python中,遍历dict的方法有四种。但这四种遍历的性能如何呢?我做了如下的测试l [(x,x) for x in xrange(10000)]d dict(l)from time import clockt0clock()for i in d:t i d[i]t1clock()for k,v in d.items():t k vt2clock()for k,v in d.iteritem…

sqlplus连mysql库_sqlplus连接数据库

sqlplus连接到远程数据库我一直以为sqlplus是服务器端的软件,今天我才知道sqlplus是客户端软件,用sqlplus也能连接到远程数据库。windows下具体连接方法如下:如果已经配置过tnsname方法一.在运行或者命令窗口里面先输入sqlplus/n...文章张振磊…

OpenGL ES入门

OpenGL ES渲染管线概述 渲染管线一般是由显示芯片GPU内部处理图形信号的并行处理单元组成,这些并行处理单元之间是独立的,从另一个角度看,渲染管线实际上也是一系列绘制过程,这一系列过程的输入是待绘制物体的相关描述信息&#x…

【前沿】MIT搞了个进取型机器人!能研究学习对象操纵的基础

来源:中国机器人网 前言:MIT的研究让数据有了机器人的方向麻省理工学院的研究人员已经汇编了一个数据集,该数据集捕获了物理上推动数百个不同对象的机器人系统的详细行为。研究人员可以使用数据集(同类中规模最大,种类…

java进度条_自学java你需要知道的,适合编程小白

1. java学习网站之前在很多学习网站上学习过Java,踩过很多坑,今天给大家推荐一个比较好用的Java学习网站,希望大家能少踩坑Java教程 | 项目实践一站式java学习这个网站的针对性强,如果你是想学习Java,在这个网站学习就…

软考考前冲刺第一章计算机硬件基础知识

1.原码表示法和补码表示法是计算机中用于表示数据的两种编码方法,在计算机系统中常采用补码来表示和运算数据,原因是采用补码可以简化计算机运算部件的设计。 在计算机中,各类运算都可以采用补码进行,特别是对于有符号数的运算。在…

既然使用神经网络也可以解决分类问题,那SVM、决策树这些算法还有什么意义呢?...

来源:Jerry的算法和NLPJerry的算法和NLP先说下结论:没有一个模型是万能的,需要根据数据选择适合的模型。在机器学习中,数据大概可以分成四大类:图像 (Image),序列(Sequence),图(Graph) 和表格(T…

python解包的概念_Python学习第176课——tar解包和压缩

上节我们学习了tar命令打包和查看tar文件中的内容,这节我们继续熟悉tar解包以及其他操作。上节我们把桌面上的linux文件夹里面的东西打了一个包,打包后的文件也在桌面上,叫tar_linux.tar。●tar解包现在我们把tar_linux.tar这个打包文件进行解…

chardet java_java实现文件编码监测

java实现文件编码监测最近在做一个文档的翻译项目,可文档的编码不知道,听头疼的。尝试了很多方法最后发现JCharDet这个工具可以轻松解决这个问题。于是作此笔记希望日后提醒自己以及帮助又需要的人。package com.uujava.mbfy.test;import java.io.Buffer…

使用python处理子域名爆破工具subdomainsbrute结果txt

近期学习了一段时间python,结合自己的安全从业经验,越来越感觉到安全测试是一个体力活。如果没有良好的coding能力去自动化的话,无疑会把安全测试效率变得很低。 作为安全测试而言,第一步往往要通过爆破目标站的一级域名开始。作为…

美陆军将在2020年军演中测试人工智能新应用

▲美陆军利用人工智能技术探测隐藏的目标,例如这辆伪装的M109A6自行榴弹炮来源: 美国《防务快讯》/图片来自互联网 编者按美陆军人工智能工作组负责人表示,陆军已开发出可检测“侦察照片”中隐藏目标的人工智能技术,并将在明年举行…

python 同时发多个请求_PythonWebServer如何同时处理多个请求

源于知乎上一个问题:https://www.zhihu.com/question/56472691/answer/293292349对于初学Web开发,理解一个web server如何能同事处理多个请求很重要。当然更重要的是,理解你通过浏览器发送的请求web server是怎么处理的,然后怎么返…

java关于hashmap编程题_LeetCode算法题-Design HashMap(Java实现)

这是悦乐书的第299次更新,第318篇原创01 看题和准备今天介绍的是LeetCode算法题中Easy级别的第167题(顺位题号是706)。在不使用任何内置哈希表库的情况下设计HashMap。具体而言,你的设计应包括以下功能:put(key,value)&#xff1a…

Nature:1000种植物的测序揭示10亿年来的进化

来源:生物通千种植物转录组计划(1,000 Plants Project,1KP)是由加拿大科学家在2008年11月发起的,召集了将近200名植物学家对1,100多种植物的基因进行测序和分析。如今,这个项目的研究成果发表在《Nature》杂…