混淆矩阵-MATLAB代码详解 - Jeff-Zhouxiaolong

Jeff-Zhouxiaolong 2021-12-12 原文


混淆矩阵-MATLAB代码详解

 

一.混淆矩阵

(一).简介
在人工智能中,混淆矩阵(confusion matrix)是可视化工具,特别用于监督学习,在无监督学习一般叫做匹配矩阵。在图像精度评价中,主要用于比较分类结果和实际测得值,可以把分类结果的精度显示在一个混淆矩阵里面。混淆矩阵是通过将每个实测像元的位置和分类与分类图像中的相应位置和分类像比较计算的。
混淆矩阵(confusion matrix)刻画一个分类器的分类准确程度。“混淆”一词也形象地表达了分类器面对多个分类时可能造成的混淆。

(二).混淆矩阵(Confusion Matrix)举例说明

混淆矩阵的每一列代表了预测类别,每一列的总数表示预测为该类别的数据的数目;每一行代表了数据的真实归属类别,每一行的数据总数表示该类别的数据实例的数目。每一列中的数值表示真实数据被预测为该类的数目:如下图,第一行第一列中的43表示有43个实际归属第一类的实例被预测为第一类,同理,第二行第一列的2表示有2个实际归属为第二类的实例被错误预测为第一类。
举例如下:
如有150个样本数据,这些数据分成3类,每类50个。分类结束后得到的混淆矩阵为:
这里写图片描述
每一行之和为50,表示50个样本;
第一行说明类1的50个样本有43个分类正确,5个错分为类2,2个错分为类3。

二.混淆矩阵的MATLAB实现

(一).数据集如下:

这里写图片描述

(二).MATLAB实现

1.confusion_matrix1.m文件(在下面主函数中直接调用)

 
%==========================================================
function confusion_matrix1(act1,det1)

[mat,order] = confusionmat(act1,det1);
k=max(order);             %k为分类的个数

%也可作实验,自己随机产生矩阵
%mat = rand(5);  %# A 5-by-5 matrix of random values from 0 to 1
%mat(3,3) = 0;   %# To illustrate
%mat(5,2) = 0;   %# To illustrate

imagesc(mat); %# Create a colored plot of the matrix values
colormap(flipud(gray));  %# Change the colormap to gray (so higher values are

%#black and lower values are white)
title(\'不分性别的分开预测标签与真实标签的混淆矩阵\'); 
textStrings = num2str(mat(:),\'%0.02f\');       %# Create strings from the matrix values
textStrings = strtrim(cellstr(textStrings));  %# Remove any space padding

%% ## New code: ###这里是不显示小矩阵块里的0,用空白代替
% idx = strcmp(textStrings(:), \'0.00\');
% textStrings(idx) = {\'   \'};
%% ################

%# Create x and y coordinates for the strings %meshgrid是MATLAB中用于生成网格采样点的函数 
[x,y] = meshgrid(1:k);  
hStrings=text(x(:),y(:),textStrings(:),\'HorizontalAlignment\',\'center\');
midValue = mean(get(gca,\'CLim\'));  %# Get the middle value of the color range
textColors = repmat(mat(:) > midValue,1,3);  %# Choose white or black for the
                                             %#   text color of the strings so
                                             %#   they can be easily seen over
                                             %#   the background color
%将矩阵[mat(:) >midValue]复制1X3块的矢量(颜色值必须为包含3个元素的数值矢量),即把矩阵[mat(:) > midValue]作为矩阵textColors的元素。
set(hStrings,{\'Color\'},num2cell(textColors,2));  %# Change the text colors;
%num2cell(textColors, 2)中2 代表「直行被切割」将结构阵列转换成异质阵列 将结构阵列转换成异质阵列;
%然后set去重后放在hStrings;

%下面这个数字8可根据自己的分类需求进行更改 
set(gca,\'XTick\',1:8,...                                    
        \'XTickLabel\',{\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',8\'},...  %#   and tick labels
        \'YTick\',1:8,...                                    %同上
        \'YTickLabel\',{\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',8\'},...
        \'TickLength\',[0 0]);
%==========================================================    

2.主函数main.m

a=xlsread(\'confusion_test.xls\');
%========================================
%真实标签:
act=a(1:194,2:2);
act1=act\';

%性别为男生的分开预测的标签
det=a(1:194,1:1);
det1=det\';

%性别为男生的未分开预测的标签
dett=a(1:194,3:3);
dett1=dett\';
%这里调用confusion_matrix1()函数求的是‘性别为男生的分开预测的标签与真真实标签的混淆矩阵’
confusion_matrix1(act1,det1)
%==========================================================

注意:

ctual:就是我们已知的label。

detected是我们通过模型预测得到的label

结合下面语句实现:

[pred,acc,preb] = svmpredict(double(testLabel), testData, model, \’-b 1\’);

上述程序只需要在confusion_matrix1.m文件中将含有(act1,det1)的参数改成自己需要求的参数,然后在主程序中调用此函数就OK了!(代码可复制直接运行)

3.运行结果:

这里写图片描述

参考文献:
[1].https://baike.baidu.com/item/%E6%B7%B7%E6%B7%86%E7%9F%A9%E9%98%B5/10087822?fr=aladdin
[2].http://blog.csdn.net/songchaomail/article/details/43834741/
[3].http://blog.csdn.net/zhaomengszu/article/details/56283832

版权声明:本文为Jeff-Zhouxiaolong原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/xiaolong19910914/p/8733449.html

混淆矩阵-MATLAB代码详解 - Jeff-Zhouxiaolong的更多相关文章

  1. 混淆矩阵

    P-R图直观的显示出学习器在样本总体上的查全率和查准率,在进行比较时,若一个学习器的P-R曲线被另一个学习器的 […]...

  2. 混淆矩阵

    http://blog.csdn.net/ganzhantoulebi0546/article/details […]...

  3. 二分类算法的评价指标:准确率、精准率、召回率、混淆矩阵、AUC

    评价指标是针对同样的数据,输入不同的算法,或者输入相同的算法但参数不同而给出这个算法或者参数好坏的定量指标。 […]...

  4. 机器学习模型评价指标 — 混淆矩阵 – Jeff-Zhouxiaolong

    机器学习模型评价指标 — 混淆矩阵 机器学习模型评价指标 – 混淆矩阵 在机器学习领域中,混淆矩阵 […]...

  5. 模型监控指标- 混淆矩阵、ROC曲线,AUC值,KS曲线以及KS值、PSI值,Lift图,Gain图,KT值,迁移矩阵

      1. 混淆矩阵 确定截断点后,评价学习器性能 假设训练之初以及预测后,一个样本是正例还是反例是已经确定的, […]...

  6. python confusion matrix 混淆矩阵

    【1】混淆矩阵(Confusion Matrix)概念 【2】 混淆矩阵-百度百科 【3】 Python中生成 […]...

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

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

  8. 混淆矩阵、准确率、召回率、ROC曲线、AUC

    混淆矩阵、准确率、召回率、ROC曲线、AUC 假设有一个用来对猫(cats)、狗(dogs)、兔子(rabbi […]...

随机推荐

  1. 面试准备——(三)Selenium(1)基础问题及自动化测试

    滴滴面试: 1. 自己负责哪部分功能? 农餐对接系统分为了两大子系统,一个是个人订餐系统,二是餐馆、个人与农产 […]...

  2. DS18b20温度传感器基础使用

    认识管脚 ![](https://img2018.cnblogs.com/blog/1252747/20180 […]...

  3. 针对标签中设置 disabled=”true”,$(“#id”).serialize()获取不到value的解决方法

      今天给<select>增加disabled=”true”, 发现$(& […]...

  4. 网站性能优化(website performance optimization)2

    我们先研究下构建渲染树前的几个步骤:也就是DOM和CSSOM,通常这些步骤的效果最差使你的网页呈现速度非常慢, […]...

  5. [转]流程的效率和内控如何平衡

    [讨论]從一個失敗的管理行為聯想到流程管理 因為發生偷盜事件,所以公司安裝4個安檢門協助糾察控管 因為安檢門反 […]...

  6. 简单解释支持向量机

    支持向量机与感知机不同的地方在于间隔最大化。 而在优化模型时有等式约束,导致优化模型时较为麻烦。 本文主要讲解 […]...

  7. 苹果证书p12和描述文件的创建方法

    2021年,最新的创建苹果证书的方法,一步一步教大家如何创建证书。 在2020年之前,我们在使用香蕉云编创建苹 […]...

  8. github下载慢解决方法

    一、在码云的搜索框中可以直接搜索:     点击任意一个搜索结果,如果发现与要下载的仓库一致,则可以通过码云直 […]...

展开目录

目录导航