混淆矩阵(Confusion Matrix)

混淆矩阵计算代码:

// 打开两幅待比较的分类影像
CFile datClassifyImg(ImgPath1, CFile::modeRead | CFile::typeBinary);// ImgPath1:路径根据自己的路径更换
CFile datGroundTruth(ImgPath2, CFile::modeRead | CFile::typeBinary);// ImgPath2:路径根据自己的路径更换int nClass = 5;// 根据你的类别数更改
int TotalPixel = samples * lines;// 根据你的图像来确定像素数量// 混淆矩阵是类别数的方阵
vector<vector<int>>ConfusionMatrix(nClass, vector<int>(nClass));// 读取两个分类影像,构建混淆矩阵
BYTE *pClassImg = new BYTE[TotalPixel];
BYTE *pGroundTruth = new BYTE[TotalPixel];
datClassifyImg.Read(pClassImg, TotalPixel);
datGroundTruth.Read(pGroundTruth, TotalPixel);
for (int nPixel = 0; nPixel < TotalPixel; nPixel++)
{int row = pClassImg[nPixel] - '\x0';int column = pGroundTruth[nPixel] - '\x0';ConfusionMatrix[row][column]++;// 对应位置加1
}
delete[]pClassImg;
delete[]pGroundTruth;
datClassifyImg.Close();
datGroundTruth.Close();

精度评价(Overall Accuracy&Kappa Coefficient)

我们已经利用两幅分类影像构建了它们之间的混淆矩阵,便可从混淆矩阵中进行精度评价。

Kappa Coefficient计算公式


其中, p0是每一类正确分类的样本数量之和除以总样本数,也就是总体分类精度 。
假设每一类的真实样本个数分别为a1,a2,…,aC,而预测出来的每一类的样本个数分别为b1,b2,…,bC
总样本个数为n,则有:

Kappa系数计算代码:

// 计算p0
int sumDiag = 0;
for (int i = 0; i < nClass; i++)
{sumDiag += ConfusionMatrix[i][i];
}
double p0 = sumDiag * 1.0 / TotalPixel;// 计算pe
int sumRC = 0;
for (int i = 0; i < nClass; i++)
{int sumR = 0;int sumC = 0;for (int j = 0; j < nClass; j++){sumR += ConfusionMatrix[i][j];sumC += ConfusionMatrix[j][i];}sumRC += sumR * sumC;
}
double pe = sumRC * 1.0 / TotalPixel / TotalPixel;// 计算Kappa
double KappaCoefficient = (p0 - pe) / (1 - pe);CString OAKappa;
OAKappa.Format(_T("Overall Accuracy = (%d/%d)  %.4lf%%\r\nKappa Coefficient = %.4lf"), sumDiag, TotalPixel, p0, KappaCoefficient);
MessageBox(OAKappa, _T("精度对比结果"));

MFC实现ENVI分类影像混淆矩阵(Confusion Matrix)及精度计算(Overall Accuracy和Kappa Coefficient)相关推荐

  1. 分类之混淆矩阵(Confusion Matrix)

    1. 写在前面 为什么时隔多年又再做一次混淆矩阵的整理,TMD就是每次用的时候要自己回过头查一遍,老是记不住,为了打好基础,再次进行梳理. 2. 为什么会有混淆矩阵 我们简单的分类衡量模型的好坏,其实 ...

  2. 多分类问题中混淆矩阵(Confusion Matrix)的Matlab画法

    在多分类问题中,有一种很实用的分类问题结果统计图. 比如说多类别文类问题,那么每一个类别分到其他类别都有一些数据,但是分到自己类别的毕竟多,这样计算百分比之后就形成了一个矩阵,如果分类正确率高的话,那 ...

  3. matlab 分类学习工具箱 Classification Learner的使用及导出其生成的图,混淆矩阵confusion matrix的画法

    声明:转自https://blog.csdn.net/qq_27914913/article/details/71436838 https://blog.csdn.net/evil_xue/artic ...

  4. 分类模型之混淆矩阵(Confusion Matrix)

    目录 混淆矩阵简介 混淆矩阵及其参数 混淆矩阵的其他指标 混淆矩阵简介 混淆矩阵是ROC曲线绘制的基础,同时它也是衡量分类型模型准确度中最基本,最直观,计算最简单的方法. 可以简单理解为:将一个分类模 ...

  5. 动手画混淆矩阵(Confusion Matrix)(含代码)

    1.混淆矩阵:Confusion Matrix 2.怎么画(新)? 3.怎么用? 网上关于混淆矩阵的代码参差不齐,没找到可用的线程的代码,所以自己尝试写了下 1.混淆矩阵:Confusion Matr ...

  6. python画混淆矩阵 confusion matrix

    sklearn.metrics.plot_confusion_matrix可以直接画混淆矩阵, 但是好像要传入sklearn的classifier. 贴一个自己写的函数, 自己定义起来比较方便: de ...

  7. python多分类画混淆矩阵_【AI基础】分类器评估一:混淆矩阵、准确率、精确率、召回率、灵敏度、特异度、误诊率、漏诊率...

    混淆矩阵 在机器学习中尤其是统计分类中,混淆矩阵(confusion matrix),也被称为错误矩阵(error matrix).之所以叫做混淆矩阵,是因为能够很容易的看到机器学习有没有将样本的类别 ...

  8. 多目标分类的混淆矩阵_用于目标检测的混淆矩阵

    多目标分类的混淆矩阵 After training a machine learning classifier, the next step is to evaluate its performanc ...

  9. 使用Excel分析数据学习笔记之 二分类与混淆矩阵

    使用Excel分析数据学习笔记之 二分类与混淆矩阵 混淆矩阵的构成: e.g.1:Bombers and seagulls 案例背景 混淆矩阵 如何根据混淆矩阵得到ROC曲线? 如何设定最佳阈值(op ...

最新文章

  1. 新书上市|当我们讨论“量子计算”时我们在讨论什么?
  2. matplotlib 的几种柱状图
  3. qq应用之超级店长数据分析
  4. ZigBee技术的应用和优势
  5. 2012服务器系统关闭网络共享,提供网络服务的前提,Windows Server 2012如何更改高级共享设置...
  6. boost知识点查阅
  7. hihocoder217周 树形DP
  8. ZooKeeper Notes 9】ZooKeepr日志清理
  9. Python入门--函数的创建与调用
  10. mysql的r2dbc_使用R2DBC实现数据库的响应式访问
  11. 微计算机原理及应用大纲,《微型计算机原理及应用》考试大纲
  12. 《史蒂夫·乔布斯传》PDF下载
  13. 马哥2019python全套视频-马哥Python60集全套视频网盘链接免费分享
  14. 使用kconfig生成autoconf.h
  15. 笔记本键盘有几个键失灵了怎么办?
  16. 微信小程序获取小程序码
  17. 学习管理系统 LMS
  18. 获奖团队访谈录|“AI+无线通信”赛道三等奖团队
  19. iOS开发 设置状态栏字体颜色
  20. 新包青天 片尾曲 参人生哲理

热门文章

  1. 思科中小型教育骨干网络解决方案
  2. 风控决策矩阵的开发与场景应用
  3. 【无标题】 中国小龙虾市场消费状况与盈利前景预测报告(新版)2022-2027年
  4. 完整的京东联盟自定义推广链接生产程序
  5. 使用 dataset 管理数据
  6. 如何去掉微软正版的产品验证提醒
  7. Android获取电池电量信息的几种方式
  8. 根据多个地点的经纬度求计算中心点经纬度
  9. 总有你挂不完的环保吊牌GRS/RCS/SCS/OBP/OCS/GOTS/……
  10. Bellhop-复杂海底地形仿真