主要内容

plotconfusion

(即将删除)绘制分类混淆矩阵

以后的版本中将会删除 plotconfusion。有关详细信息,请参阅Transition Legacy Neural Network Code to dlnetwork Workflows

有关更新代码的建议,请参阅版本历史记录

说明

plotconfusion(targets,outputs) 绘制真实标签 targets 和预测标签 outputs 的混淆矩阵。将标签指定为分类向量,或以一对 N (one-hot) 形式指定。

提示

不推荐将 plotconfusion 用于分类标签。请改用 confusionchart

在混淆矩阵图上,行对应于预测类(输出类),列对应于真实类(目标类)。对角线上的单元格对应于正确分类的观测值。非对角线上的单元格对应于未正确分类的观测值。每个单元格中都显示观测值数目和观测值数目占总观测值数目的百分比。

绘图最右侧的列显示预测属于正确分类和未正确分类的每个类的示例占所有示例的百分比。这些度量通常分别称为精确度(或正预测值)和假发现率。绘图底部的行显示属于正确分类和未正确分类的每个类的示例占所有示例的百分比。这些度量通常分别称为召回率(或真正率)和假负率。绘图右下角的单元格显示整体准确度。

示例

plotconfusion(targets,outputs,name) 绘制混淆矩阵,并在绘图标题的开头添加 name

plotconfusion(targets1,outputs1,name1,targets2,outputs2,name2,...,targetsn,outputsn,namen) 在一个图窗中绘制多个混淆矩阵,并将 name 参量添加到对应绘图标题的开头。

示例

全部折叠

加载由手写数字的合成图像组成的数据。XTrain 是一个 28×28×1×5000 图像数组,labelsTrain 是一个包含图像标签的分类向量。

load DigitsDataTrain
classNames = categories(labelsTrain);

定义一个卷积神经网络的架构。

layers = [
    imageInputLayer([28 28 1])
    
    convolution2dLayer(3,8,'Padding','same')
    batchNormalizationLayer
    reluLayer    
    convolution2dLayer(3,16,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    convolution2dLayer(3,32,'Padding','same','Stride',2)
    batchNormalizationLayer
    reluLayer
    
    fullyConnectedLayer(10)
    softmaxLayer];

指定训练选项并训练网络。

options = trainingOptions('sgdm', ...
    'MaxEpochs',5, ...
    'Verbose',false, ...
    'Plots','training-progress', ...
    'Metrics','accuracy');
net = trainnet(XTrain,labelsTrain,layers,"crossentropy",options);

使用经过训练的网络加载测试数据并对其分类。

load DigitsDataTest
scores = minibatchpredict(net,XTest);
YTest = scores2label(scores,classNames);

绘制由测试标签和预测标签组成的混淆矩阵。

plotconfusion(labelsTest,YTest)

行对应于预测类(输出类),列对应于真实类(目标类)。对角线上的单元格对应于正确分类的观测值。非对角线上的单元格对应于未正确分类的观测值。每个单元格中都显示观测值数目和观测值数目占总观测值数目的百分比。

绘图最右侧的列显示预测属于正确分类和未正确分类的每个类的示例占所有示例的百分比。这些度量通常分别称为精确度(或正预测值)和假发现率。绘图底部的行显示属于正确分类和未正确分类的每个类的示例占所有示例的百分比。这些度量通常分别称为召回率(或真正率)和假负率。绘图右下角的单元格显示整体准确度。

关闭所有图窗。

close(findall(groot,'Type','figure'))

输入参数

全部折叠

真实类标签,指定为以下项之一:

  • 分类向量,其中每个元素是一个观测值的类标签。outputstargets 参量必须具有相同的元素数。如果分类向量定义基础类,则 plotconfusion 显示所有基础类,即使没有某些基础类的观测值也是如此。如果参量是有序分类向量,则它们必须以相同的顺序定义相同的基础类别。

  • N×M 矩阵,其中 N 是类数目,M 是观测值数目。矩阵的每列必须采用一对 N (one-hot) 形式,其中一个元素等于 1,表示真实标签,所有其他元素等于 0。

预测类标签,指定为以下项之一:

  • 分类向量,其中每个元素是一个观测值的类标签。outputstargets 参量必须具有相同的元素数。如果分类向量定义基础类,则 plotconfusion 显示所有基础类,即使没有某些基础类的观测值也是如此。如果参量是有序分类向量,则它们必须以相同的顺序定义相同的基础类别。

  • N×M 矩阵,其中 N 是类数目,M 是观测值数目。矩阵的每列可以采用一对 N (one-hot) 形式,其中等于 1 的单个元素指示预测的标签;也可以采用总和为 1 的概率形式。

混淆矩阵的名称,指定为字符数组。plotconfusion 将指定的 name 添加到绘图标题的开头。

数据类型: char

版本历史记录

在 R2008a 中推出

全部展开