Matlab画混淆矩阵

原创 2018年04月16日 11:24:04

    最近自己的工作要用到混淆矩阵,因此简单的了解了一下混淆矩阵。本博客主要是参照博客https://blog.csdn.net/xuyingjie125/article/details/78417760来写的,在此向原作者表示感谢。

        首先来看一下什么是混淆矩阵吧。在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类像比较计算的。混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目。

        接下来我对代码进行简单的注释。

function confusion_matrix1(act1, det1)
%act1为真实的标签,det1为预测标签
%输入的是行向量
%https://blog.csdn.net/xuyingjie125/article/details/78417760
[mat, order] = confusionmat(act1, det1);
%confusionmat用来构建混淆矩阵,mat返回混淆矩阵,order返回每个变量所在的类
%mat(i,j)表示训练集中i类在测试集中被分到j类的个数
k = max(order);   %k为分类的个数

imagesc(mat); %imagesc函数将矩阵mat的元素数值按大小转化为不同颜色,并在坐标轴对应位置以这种颜色染色
colormap(flipud(gray)); %转换成灰度图
%colormap函数是用来设定和获取当前色图的函数
%flipud是矩阵倒转命令,gray是matlab内置矩阵
%gray()会返回M×3的矩阵
title('混淆矩阵');
textStrings = num2str(mat(:),'%0.02f');
%num2str(x,precision)把数组x转换成字符串形式表示,precision为精度
textStrings = strtrim(cellstr(textStrings));
%cellstr是将字符数组转换成cell类型
%裁切字符串的开头和尾部的空格,制表,回车符

%meshgrid是MATLAB中用于生成网格采样点的函数
[x,y] = meshgrid(1:k);
hStrings = text(x(:),y(:),textStrings(:),'HorizontalAlignment','center');
%text函数表示对文字string定位于用坐标轴指定的位置,且对指定的属性进行设置
%HorizontalAlignment表示文字水平方向的对齐方式,center表示文本外框中间对齐
midValue = mean(get(gca,'CLim')); 
%get(gca,'CLim')获取当前的坐标轴句柄,并设置它的CLim(ColorLimit)值,用来使不同的图使用相同的色标
%mean函数返回均值,使得midValue获得图色标的均值0.5000
textColors = repmat(mat(:) > midValue,1,3);
%将矩阵[mat(:)>midValue]复制1×3块的矢量(颜色值必须为包含3个元素的数值矢量)
%把矩阵[mat(:)>midValue]作为矩阵textColors的元素
%B=repmat(A,M,N)这是一个处理大矩阵且内容有重复时使用,其功能是以A的内容堆叠在(M×N)的矩阵B中,
%B矩阵的大小由M×N及A矩阵的内容决定,
%如果A是一个3×4×5的矩阵,则矩阵B变为6×12×5

set(hStrings,{'Color'},num2cell(textColors,2));
%n=1表示把每列的所有行转换为cell,n=2表示把每行的所有列转换为cell,将结构阵列转换成异质阵列
%然后set去重后放在hStrings

%根据自己的分类要求更改类别标签
set(gca,'XTick',1:9,'XTickLabel',{'1','2','3','4','5','6','7','8','9'},'YTick''1:9','YTickLabel',{'1','2','3','4','5','6','7','8','9'});



利用matlab画混淆矩阵(confusion matrix)

写论文的过程中经常需要画一个混淆矩阵(confusion matrix)来验证分类结果的有效性。通常只需要两个步骤: - 保存混淆矩阵文本文件 - matlab中使用imagesc命令例如:>...
  • Cheese_pop
  • Cheese_pop
  • 2017-10-11 20:18:08
  • 1782

【混淆矩阵】matlab画混淆矩阵

主要借鉴此博客代码:http://blog.csdn.net/sherry_gp/article/details/50560003 但是这个博主的代码达不到我想要的效果,所以修改了一下 我想要实现...
  • zb1165048017
  • zb1165048017
  • 2016-06-22 21:55:03
  • 7220

神奇的excel:在excel中画混淆矩阵

在excel中画混淆矩阵的流程如下所示: 1、将混淆矩阵中的数据输入到excel表格中 2、选中该表格,2010版excel中,开始--->样式--->条件格式--->新建规则,按下图所示设置,设置完...
  • liuxiabing150
  • liuxiabing150
  • 2015-05-26 21:01:54
  • 2562

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

  • 2015年12月07日 11:36
  • 52KB
  • 下载

简单理解混淆矩阵—Matlab详细代码注解

本人计算机小白一枚,将自己学到的知识点整理出来,一方面是对自己学习的小总结,另一方面是欢迎大家批评指正。如果觉得写得还可以,大家可以转发关注此博客,谢谢!后续会有新算法持续更新~...
  • xuyingjie125
  • xuyingjie125
  • 2017-11-01 19:48:10
  • 1266

MATLAB中的混淆矩阵的实现

混淆矩阵的matlab代码实现: actual:就是我们已知的label。 detected是我们通过模型预测得到的label 结合下面语句实现:  [pred,acc,preb] = svm...
  • zhaomengszu
  • zhaomengszu
  • 2017-02-21 15:17:55
  • 2875

转:Confusion Matrix(混淆矩阵) 解释最全的一个

Confusion Matrix, 混淆矩阵 [转贴 2009-7-4 17:09:39]     字号:大 中 小   一个完美的分类模型就是,如果一个客户实际上(Ac...
  • wowotuo
  • wowotuo
  • 2014-07-29 11:09:33
  • 6818

混淆矩阵理解

一个完美的分类模型是,将实际上是good的实例预测成good,将bad的实例预测称bad。对于实际应用中的分类模型,可能预测错误实例类型,因此我们需要知道到底预测对了多少实例,预测错了多少实例。混淆矩...
  • u010159842
  • u010159842
  • 2016-11-08 16:05:40
  • 2888

Matlab code for Precision/Recall, ROC, Accuracy, F-Measure

  • 2016年01月15日 09:49
  • 52KB
  • 下载

crfasrnn环境搭建,跑demo

crfasrnn官网: https://github.com/torrvision/crfasrnn 按照官网的步骤说明做即可 (1)将下载得到的压缩包解压,得到crfasrnn文件夹,将该文件夹拷...
  • liuxiabing150
  • liuxiabing150
  • 2016-06-11 15:35:46
  • 4391
收藏助手
不良信息举报
您举报文章:Matlab画混淆矩阵
举报原因:
原因补充:

(最多只允许输入30个字)