10. 混淆矩阵、总体分类精度、Kappa系数

一、前言

表征分类精度的指标有很多,其中最常用的就是利用混淆矩阵、总体分类精度以及Kappa系数。

其中混淆矩阵能够很清楚的看到每个地物正确分类的个数以及被错分的类别和个数。但是,混淆矩阵并不能一眼就看出类别分类精度的好坏,为此从混淆矩阵衍生出来各种分类精度指标,其中总体分类精度(OA)和卡帕系数(Kappa)应用最为广泛。

总体分类精度(OA):指被正确分类的类别像元数与总的类别个数的比值;OA值虽然能很好的表征分类精度,但是对类别像元个数极度不平衡的多类地物来说,其值收到像元数据较多类别的影响较大,不能很好的表征每个类别地物。

Kappa系数(Kappa):Kappa系数是一种比例,代表着分类与完全随机的分类产生错误减少的比例,其计算过程可用如下公式表示:

二、计算和代码

以下部分代码主要实现,如何获得混淆矩阵,对于OA和Kappa系数则是很容易从混淆矩阵计算可得

 1     int tolCount = 0;
 2     for(int i = 0;i<row;i++)
 3     {
 4         float *oriPtr = oriClassMap.ptr<float>(0);
 5         float *stdPtr = stdClassMap.ptr<float>(0);
 6         for(int j = 0;j<col;j++)
 7         {
 8             int curStdIndex = int(stdPtr[j]);
 9             if(curStdIndex == 0)
10                continue;
11             int curOriIndex = int(oriPtr[j]);
12
13             if(curStdIndex == curOriIndex)
14                 conf.at<int>(curStdIndex-1,curStdIndex-1) = conf.at<int>(curStdIndex-1,curStdIndex-1)+1;
15             else
16             {
17                 conf.at<int>(curStdIndex-1,curOriIndex-1) = conf.at<int>(curStdIndex-1,curOriIndex-1)+1;
18             }
19             tolCount++;
20         }
21     }

三、计算结果显示

时间: 2024-10-11 00:45:50

10. 混淆矩阵、总体分类精度、Kappa系数的相关文章

图像分类中混淆矩阵精度验证法中的几个指标说明

ToolBox->Classification->PostClassification->Confusion Matrix->Using Ground Truth ROIs,可以得到如下的分类精度验证的混淆矩阵. 要看懂这个精度验证结果,需要了解几个混淆矩阵中的几项评价指标: 1.总体分类精度(Overall Accuracy) 等于被正确分类的像元总和除以总像元数.被正确分类的像元数目沿着混淆矩阵的对角线分布,总像元数等于所有真实参考源的像元总数,如本次精度分类精度表中的Over

kappa系数在评测中的应用

◆版权声明:本文出自胖喵~的博客,转载必须注明出处. 转载请注明出处:http://www.cnblogs.com/by-dream/p/7091315.html 前言 最近打算把翻译质量的人工评测好好的做一做. 首先废话几句,介绍下我这边翻译质量的人工评测怎么做.先找一批句子,然后使用不同的引擎对其进行翻译,然后将原文和译文用下面的方式进行呈现,把这些交给专业的人士去进行打分,打完分之后,对结果进行统计,得出评测结果. 看似流程很顺利,且结果也有参考价值.然而实际操作的过程中发现如果一个用户的

scikit-learn 多分类混淆矩阵

注:有些markdown语法没渲染出来,可以简书查看:scikit-learn 多分类混淆矩阵 前面 sklearn.metrics.multilabel_confusion_matrix 是 scikit-learn 0.21 新增的一个函数.看名字可知道是用来计算多标签的混淆矩阵的.不过也可以用它来计算多分类的混淆矩阵.MCM将多分类数据转化为2分类问题,采用one-vs-rest策略,即某一类为正样本,其余类别为负样本.每一类都作为正样本,计算混淆矩阵.按标签的顺序返回所有. MCM 返回

混淆矩阵

混淆矩阵(Confusion Matrix) 混淆矩阵是一个列表,里面包含了实际值和判断值的情况.下图是信息更加丰富的一张混淆矩阵图: 作为良好的学习模型,TN和TP值是高的,FP和FN值=0:但是很多场景下FP和FN都不是0,那么怎么评价个分类学习的效果(performance)呢? Accuracy:全准率 (TP+TN)/total = (100+50)/165 = 0.91 Misclassification Rate:差错率 (FP+FN)/total = (10+5)/165 = 0

confusion_matrix(混淆矩阵)

作者:十岁的小男孩 凡心所向,素履可往 目录 监督学习-混淆矩阵 是什么?有什么用?怎么用? 非监督学习-匹配矩阵 混淆矩阵 矩阵每一列代表预测值,每一行代表的是实际的类别.这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个class被预测成另一个class). 假设有一个用来对猫(cats).狗(dogs).兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结.假设总共有 27 只动物:8只猫, 6条狗, 13只兔子.结果的混淆矩阵如上

混淆矩阵、准确率、精确率/查准率、召回率/查全率、F1值、ROC曲线的AUC值

准确率.精确率(查准率).召回率(查全率).F1值.ROC曲线的AUC值,都可以作为评价一个机器学习模型好坏的指标(evaluation metrics),而这些评价指标直接或间接都与混淆矩阵有关,前四者可以从混淆矩阵中直接计算得到,AUC值则要通过ROC曲线进行计算,而ROC曲线的横纵坐标又和混淆矩阵联系密切,所以在了解这些评价指标之前,先知道什么是混淆矩阵很有必要,也方便记忆. 1.混淆矩阵 对于一个二分类问题,我们可以得到如表 1所示的的混淆矩阵(confusion matrix): 表

混淆矩阵(Confusion matrix)的原理及使用(scikit-learn 和 tensorflow)

原理 在机器学习中, 混淆矩阵是一个误差矩阵, 常用来可视化地评估监督学习算法的性能. 混淆矩阵大小为 num_classes x num_classes 的方阵, 其中 num_classes 表示类的数量. 这个矩阵的每一行表示真实类中的实例, 而每一列表示预测类中的实例 (Tensorflow 和 scikit-learn 采用的实现方式). 也可以是, 每一行表示预测类中的实例, 而每一列表示真实类中的实例 (Confusion matrix From Wikipedia 中的定义). 

机器学习入门-混淆矩阵-准确度-召回率-F1score 1.itertools.product 2. confusion_matrix(test_y, pred_y)

1. itertools.product  进行数据的多种组合 intertools.product(range(0, 1), range(0, 1))  组合的情况[0, 0], [0, 1], [1, 0], [1, 1] 2. confusion_matrix(test_y, pred_y)  # 构造混淆矩阵 混淆矩阵是TP(正的预测成正的), FP(正的预测成负的), TN(负的预测成负的), FN(负的预测成正的) 从混淆矩阵中,我们可以很清楚的看出这个信息,这是一个信用欺诈的案例,

mIoU混淆矩阵生成函数代码详解

代码参考博客原文: https://blog.csdn.net/jiongnima/article/details/84750819 在原文和原文的引用里,找到了关于mIoU详尽的解释.这里重点解析 fast_hist(a, b, n) 这个函数的代码. 生成混淆矩阵的代码: 1 #设标签宽W,长H 2 def fast_hist(a, b, n):#a是转化成一维数组的标签,形状(H×W,):b是转化成一维数组的标签,形状(H×W,):n是类别数目,实数(在这里为19) 3 ''' 4 核心代