最近自己的工作要用到混淆矩阵,因此简单的了解了一下混淆矩阵。本博客主要是参照博客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函数是用来设定和获取