NOTE:

1、一个小案例说明兰德系数是如何怎么计算的。很详细!

2、关于兰德系数的讨论:https://stats.stackexchange.com/questions/89030/rand-index-calculation

注意:

+--------------------------------+--------------------------------------+
| TP:                            | FN:                                  |
| Same class + same cluster      | Same class + different clusters      |
+--------------------------------+--------------------------------------+
| FP:                            | TN:                                  |
| different class + same cluster | different class + different clusters |
+--------------------------------+--------------------------------------+

例如:

给定一个共生矩阵,

  | 1 | 2 | 3
--+---+---+---
x | 5 | 1 | 2
--+---+---+---
o | 1 | 4 | 0
--+---+---+---
◊ | 0 | 1 | 3

其中,x,o,◊表示class,1、2、3表示cluster。(ps:具体详情,请打开上述的链接即可弄明白。)

行方向表示same class,可求得TP+FN的值;列方向表示same cluster,可求得TP+FP的值。

总个数组合“选2个”,可求得总值TP+FN+FP+TN。矩阵的的每个元素组合“选2个”,即可求得TP的值。

剩下的,相减即可。

兰德系数(Rand Index) = (TP+TN)/(TP+FP+FN+TN);

准确度(Precision) = (TP)/(TP+FP);

召回率(Recall)=(TP)/(TP+FN);

Python版:

from keras.datasets import fashion_mnist
import numpy as npdef rand_index(y_true, y_pred):n = len(y_true)a, b = 0, 0for i in range(n):for j in range(i+1, n):if (y_true[i] == y_true[j]) & (y_pred[i] == y_pred[j]):a +=1elif (y_true[i] != y_true[j]) & (y_pred[i] != y_pred[j]):b +=1else:passRI = (a + b) / (n*(n-1)/2)return RI_, (X, y_true) = fashion_mnist.load_data()
y_random = np.random.randint(0, 10, 10000)print(rand_index(y_true, y_random))
## output : 0.8200785478547855

Matlab版:

function RI = RandIndex(X,Y)
%RANDINDEX X&Y are two vectors representing the label of the dataset.
% X input; Y output.X = X(:);
Y = Y(:);TP = 0;
TN = 0;
N = length(X);
C_N2 = nchoosek(N,2);
PIS = [1:N];                                            % PIS: Positive Integer Sequence
ordinal_sequence = combntns(PIS,2);
for k = 1:C_N2index = ordinal_sequence(k,:);if (X(index(1))==X(index(2)) & Y(index(1))==Y(index(2)));TP = TP+1;endif (X(index(1))~=X(index(2)) & Y(index(1))~=Y(index(2)));TN = TN+1;end
end
RI = (TP+TN)/C_N2;   

自写Matlab版(望诸位指正):

close all;clear;clc;%%
%二值图像
SEG = im2bw(imread('0_8_8976_GCMF.png'));%分割图
GT = im2bw(imread('0_8_8976_mask.png'));%真值图subplot(2,2,1);imshow(GT);
title('GT image','Color', 'g');
hold on;
subplot(2,2,2);imshow(SEG);
title('SEG image','Color', 'r');
hold on;
subplot(2,2,3);imshow(GT&SEG);
title('GT \cap SEG ','Color', 'b');
hold on;
subplot(2,2,4);imshow(GT|SEG);
title('GT \cup SEG ','Color', 'm');%%
%统计各个元素的数量:
%前景-前景(f_f)\ 前景-背景(f_b)
%背景-前景(b_f)\ 前景-前景(b_b)
f_f = length(find(GT==1&SEG==1));
f_b = length(find(GT==1&SEG==0));
b_f = length(find(GT==0&SEG==1));
b_b = length(find(GT==0&SEG==0));%%
%分别统计真值图、分割图的前景像素点和背景像素点的个数
gt_f = f_f + f_b;
gt_b = b_f + b_b;seg_f = f_f + b_f;
seg_b = f_b + b_b;%%
%计算tp、tn、fp、fn
num_pixels = gt_f + gt_b;
total = nchoosek(num_pixels,2);tp_plus_fp = nchoosek(seg_f,2)+nchoosek(seg_b,2);
tp_plus_fn = nchoosek(gt_f,2)+nchoosek(gt_b,2);tp = nchoosek(f_f,2)+nchoosek(b_f,2)+nchoosek(b_b,2)+nchoosek(f_b,2);
fp = tp_plus_fp - tp;
fn = tp_plus_fn - tp;
tn = total - tp - fp - fn;%%
%计算准确率、召回率、兰德系数
precision = tp/(tp_plus_fp);
recall = tp/(tp_plus_fn);
rand_index = (tp+tn)/total;disp(['precision = ',num2str(precision)]);
disp(['recall = ',num2str(recall)]);
disp(['rand_index = ',num2str(rand_index)]);

兰德系数(Rand Index)相关推荐

  1. 调整兰德系数(Adjusted Rand index,ARI)的计算

    兰德指数(Rand index, RI) RI取值范围为[0,1],值越大意味着聚类结果与真实情况越吻合: 如果有了类别标签,那么聚类结果也可以像分类那样计算准确率和召回率. 假设U是外部评价标准,即 ...

  2. 聚类算法评价指标——adjusted Rand index, ARI指数(调整兰德指数)

    目录 Rand指数(Rand Index, RI)兰德系数 调整兰德指数(adjustedRand index,ARI)是一种常见的聚类外部评价指标,其通过计算在真实标签和聚类结果中被分配在相同或不同 ...

  3. 兰德系数、调整兰德系数

    兰德系数(Rand index) 调整兰德系数(Adjusted Rand index) 调整兰德系数(Adjusted Rand index)用于聚类模型的性能评估,但是其需要true_label, ...

  4. 聚类评价兰德系数讲明白的

    聚类评价兰德系数讲明白的 https://blog.csdn.net/Miracle0_0/article/details/96481995 聚类评价兰德系数 https://blog.csdn.ne ...

  5. 机器学习实验 - K均值聚类

    目录 一.报告摘要 1.1 实验要求 1.2 实验思路 1.3 实验结论 二.实验内容 2.1 方法介绍 2.2 实验细节 2.2.1 实验环境 2.2.2 实验过程 2.2.3 实验与理论内容的不同 ...

  6. 机器学习实验 - MeanShift聚类

    目录 一.报告摘要 1.1 实验要求 1.2 实验思路 1.3 实验结论 二.实验内容 2.1 方法介绍 2.2 实验细节 2.2.1 实验环境 2.2.2 实验过程 2.2.3 实验与理论内容的不同 ...

  7. cv面试百问学习day1

    参考转载自https://zhuanlan.zhihu.com/p/458674733 1.基本评价指标 1.1 为什么要用AUC去衡量机器学习模型的好坏 答:一个分类模型的分类结果的好坏取决于以下两 ...

  8. 机器学习分类与性能度量

    机器学习分类与性能度量 数据集:训练集(Training Set).验证集(Validation Set)和测试集(Test Set) 1. 当模型无需人为设定超参数,所用参数都通过学习得到,则不需要 ...

  9. 机器学习 | 聚类评估指标

    文章目录 1. 聚类评估指标 1.1 外部评估指标 RI 兰德指数 ARI 调整兰德指数 Jaccard JC指数 FMI FMI指数 MI 互信息 NMI 归一化互信息 AMI 调整互信息 1.2 ...

最新文章

  1. Java中break、Continue、reutrn总结
  2. ASP.NET MVC如何实现自定义验证(服务端验证+客户端验证)
  3. 用软件lm_sensors监测Linux系统和CPU温度(转)
  4. dvd管理器java_Java DVD管理器 基础示例代码下载
  5. WCF 非http寄宿IIS
  6. .NET Core 3.0 本地工具
  7. Linux之防火墙开通端口
  8. 利用H5和ChromiumWebBrowser构建应用
  9. 多边形面积的求法(已知每个点的坐标)hdu2036
  10. 一条命令把“有道词典”的生词本导入“墨墨背单词”
  11. jspstudy 升级mysql_jspstudy+myeclipse 搭建jsp开发环境
  12. Python自然语言处理 8 分析句子结构
  13. AGV小车导航控制 研一《智能控制》课程文献阅读作业
  14. 徐思201771010132《面向对象程序设计(java)》第十五周学习总结
  15. 无线wifi服务器,无线串口服务器,wifi转串口,网口转wifi,无线串口通讯模块-上海卓岚...
  16. 计算机控制技术第二章,微型计算机控制技术 赖寿宏版 课件 第二章.ppt
  17. 纯css写滚动的弹幕特效
  18. SQL高级——PLSQL数据库编程
  19. ABBYY FineReader:PDF转换、一键OCR、图片转文字等,OCR识别一遍帮你搞定。
  20. 如何快速查找下载文献

热门文章

  1. numpy save load
  2. 【Azure 应用服务】NodeJS Express + MSAL 应用实现AAD集成登录并部署在App Service Linux环境中的实现步骤
  3. windows下搭建python+selenium环境(批量删除sina微博)
  4. 不会压测?没关系,手把手教你用jmeter做压力测试及结果分析
  5. 英伟达Jetson Nano的初步了解
  6. cf 1677 B. Tokitsukaze and Meeting
  7. PCL5打印机命令语言功能参考
  8. 打包微服务前后端分离项目并部署到服务器 --- 分布式 Spring Cloud + 页面渲染 Nuxt.js
  9. android旋转的列表,Android利用layer-list实现ProgressBar顺时针及逆时针旋转
  10. html扩展调用qq邮箱