主要内容

confusionmat

对于分类问题计算混淆矩阵

描述

例子

C= confusionmat (集团grouphat返回混淆矩阵C通过已知的和预测的组中测定集团grouphat, 分别。

例子

C= confusionmat (集团grouphat“秩序”grouporder使用grouporder排列…的行和列C

例子

[C命令) = confusionmat (___还返回行和列的顺序C在变量命令使用任何以前的语法输入参数。

例子

全部收缩

显示有两个错误分类和一个缺失分类的数据的混淆矩阵。

为已知组和预测组创建向量。

G1 = [3 2 2 3 1 1]';%被组g2 = [4 2 3 NaN 1 1]';%预测组

返回混淆矩阵。

C = confusionmat (g1, g2)
C =4×42 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0

混淆矩阵的行和列的指数C是相同的,并且默认按照?的排序顺序排列(g1, g2),也就是说,(1、2、3、4)

混淆矩阵显示,已知两个数据点是在第1组被正确地分类。对于组2,数据点中的一个被错误分类到组3。此外,已知在组3中的数据点中的一个被错误分类到第4组。confusionmat对待分组变量中的值G2的行和列中不包含该值C

通过使用绘制混淆矩阵作为混淆矩阵图confusionchart

confusionchart (C)

Figure包含一个confusimatrixchart类型的对象。

您不需要先计算混淆矩阵,然后绘制它。相反,我们可以直接使用真实和预测的标签来绘制一个混淆矩阵图confusionchart

厘米= confusionchart (g1, g2)

Figure包含一个confusimatrixchart类型的对象。

cm = ConfusionMatrixChart with properties: NormalizedValues: [4x4 double] ClassLabels: [4x1 double]显示所有属性

ConfusionMatrixChart对象中存储数字混淆矩阵NormalizedValues属性中的类ClassLabels财产。显示使用点符号这些属性。

cm.NormalizedValues
ans =.4×42 0 0 0 0 1 1 0 0 0 0 1 0 0 0 0
厘米。ClassLabels
ans =.4×11 2 3 4

显示有两个错误分类和一个缺失分类的数据的混淆矩阵,并指定组顺序。

为已知组和预测组创建向量。

G1 = [3 2 2 3 1 1]';%被组g2 = [4 2 3 NaN 1 1]';%预测组

指定分组顺序并返回混淆矩阵。

C = confusionmat (g1, g2,“秩序”[4 3 2 1])
C =4×40 0 0 0 1 0 0 0 0 1 1 0 0 0 0 2

混淆矩阵的行和列的指数C是相同的,并按照组顺序指定的顺序排列,即(4、3、2、1)

混淆矩阵的第二行C显示已知属于组3的一个数据点被错误地划分为组4。第三排C显示,属于组2的数据点中的一个被错误分类到组3,并且第四行显示了已知的两个数据点是在第1组被正确地分类。confusionmat对待分组变量中的值G2的行和列中不包含该值C

上的样本进行分类fisheriris数据集和显示混淆矩阵的结果分类。

载入费雪的虹膜数据集。

加载fisheriris

将测量结果和数据分组随机化。

rng (0,“扭腰”);%的再现性numObs =长度(物种);p = randperm (numObs);量=量(p:);物种=物种(p);

通过在数据的前半部分使用的测量训练判别分析分类。

一半=地板(numObs / 2);培训=量(1:一半,:);trainingSpecies =物种(1:一半);Mdl = fitcdiscr(培训、trainingSpecies);

通过使用训练过的分类预测数据下半年测量标签。

样本= MEAS(半+ 1:端,:);grouphat =预测(MDL,样品);

指定组顺序并显示所得到的分类的混淆矩阵。

组=物种(5 + 1:结束);[C,顺序]= confusionmat(组、grouphat“秩序”,{“setosa”“多色的”“virginica”})
C =3×329 0 0 0 22 2 0 0 22
订单=3 x1细胞{ 'setosa'} { '云芝'} { '锦葵'}

混淆矩阵表明,属于setosa和virginica的测度被正确分类,而属于versicolor的两个测度被错误分类为virginica。输出命令包含该序列中的行数和混淆矩阵的列的上述群阶数中指定的顺序{ 'setosa', '云芝', '锦葵'}

对一个高大的数组进行分类fisheriris数据集,计算已知和预测的高标号的混淆矩阵confusionmat函数,并使用confusionchart功能。

当您在高大的阵列进行计算,MATLAB®使用使用并行池(默认情况下,如果您有并行计算工具箱™)或本地MATLAB会话。如果你想使用时,你有并行计算工具箱本地MATLAB会话运行示例,您可以通过使用改变全球执行环境mapreduce功能。

载入费雪的虹膜数据集。

加载fisheriris

转换内存中的数组物种高大的阵列。

TX =高(MEAS);
开始使用“本地”轮廓平行池(parpool)......连接到并行池(工号:6)。
泰=高(物种);

求高阵中观测的次数。

numObs =收集(长度(ty));%聚集收集高大阵列到存储器

使用。设置随机数生成器的种子rngtallrng为再现性,并随机选取训练样本。结果可能会根据高数组的工作人员数量和执行环境而有所不同。有关详细信息,请参见控制代码运行的位置

rng (“默认”)tallrng(“默认”) numTrain = floor(nummob /2);[txTrain, trIdx] = datasample (tx numTrain,“替换”、假);tyTrain =泰(trIdx);

在训练样本上拟合一个决策树分类器模型。

MDL = fitctree(txTrain,tyTrain);
评估高表达式使用并行池“当地”:——通过1 2:在3.9秒完成,通过2 2:在1.5秒完成评估在7.3秒完成评估高表达式使用并行池“当地”:——通过1 4:在0.88秒完成,通过2 4:在1.6秒完成,通过3 4:在4秒完成,通过4 4:在2.7秒完成评估在11秒完成评估高表达式使用并行池“当地”:——通过1 4:在0.54秒完成,通过2 4:在1.2秒完成,通过3 4:完成在3秒-通过4 4:在2秒完成评估在7.6秒完成评估高表达式使用并行池“当地”:——通过1 4:在0.51秒完成,通过2 4:在1.3秒完成,通过3 4:在3.1秒完成,通过4 4:在2.5秒完成评估在8.5秒完成评估高表达式使用并行池“当地”:——通过1 4:在0.42秒完成,通过2 4:在1.2秒完成,通过3 4:3秒内完成-通过4道中的第4道:2.1秒内完成评估7.6秒内完成

使用训练好的模型预测测试样本的标签。

txt = tx (~ trIdx:);标签=预测(mdl, txt);

计算所得分类的混淆矩阵。

tyTest = TY(〜trIdx);[C,为了] = confusionmat(tyTest,标签)
C = M×N×……高大的数组???...???...? ? ? ... : : : : : : Preview deferred. Learn more. order = M×N×... tall array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : : Preview deferred. Learn more.

使用收集函数执行延迟计算并返回结果confusionmat在内存中。

收集(C)
使用Parallel Pool 'local'计算tall表达式
ans =.3×320 0 0 1 30 20 0 22
收集(顺序)
评估使用并行池“本地”高表达:评价0.032秒完成
ans =.3×1细胞{ 'setosa'} { '云芝'} { '锦葵'}

混淆矩阵表明,花色类中的三个测量值是错误分类的。所有属于setosa和virginica的测量值都被正确分类。

要计算和绘制混淆矩阵,请使用confusionchart反而。

厘米= confusionchart (tyTest标签)
using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.34 sec Evaluation in 0.6 sec using the Parallel Pool 'local': - Pass 1 of 1: Completed in 0.48 sec Evaluation in 0.67 sec

cm = ConfusionMatrixChart with properties: NormalizedValues: [3×3 double] ClassLabels: {3×1 cell}显示所有属性

输入参数

全部收缩

用于对观察进行分类的已知组,指定为数字向量、逻辑向量、字符数组、字符串数组、字符向量的单元数组或分类向量。

集团是相同的类型的一个分组变量grouphat.这集团论点必须有相同数量的观察grouphat,如分组变量.这confusionmat函数将字符数组和字符串数组视为字符向量的单元格数组。此外,confusionmat对待空的,'不明确的'集团作为缺少的值,不将它们计算为不同的组或类别。

例子:{'男','女','女','男','女'}

数据类型:||逻辑|字符|字符串|细胞|分类

预测组进行分类的观察,指定为数值向量,逻辑向量,字符数组,字符串数组,字符向量的单元阵列,或分类矢量。

grouphat是相同的类型的一个分组变量集团.这grouphat论点必须有相同数量的观察集团,如分组变量.这confusionmat函数将字符数组和字符串数组视为字符向量的单元格数组。此外,confusionmat对待空的,'不明确的'grouphat作为缺少的值,不将它们计算为不同的组或类别。

例子:[1 0 0 1 0]

数据类型:||逻辑|字符|字符串|细胞|分类

组顺序,指定为数字向量、逻辑向量、字符数组、字符串数组、字符向量单元格数组或类别向量。

grouporder一个分组变量是否包含所有不同的元素集团grouphat.指定grouporder的行和列的顺序C.如果grouporder包含不在的元素集团grouphat,对应的条目C0.

默认情况下,该组顺序取决于数据类型s =[集团;grouphat]

  • 对于数字和逻辑向量,其顺序为的排序顺序S.

  • 对于分类向量,顺序为返回的顺序类别(S)

  • 对于其它数据类型,所述顺序是在第一出现的顺序S.

例子:“秩序”,{“setosa”、“癣”,“virginica”}

数据类型:||逻辑|字符|字符串|细胞|分类

输出参数

全部收缩

属性中不同元素的总数作为方阵返回集团grouphat参数。C (i, j)观察的计数是已知的组吗一世但预计会在小组里j

行和列C具有相同的组索引的相同排序。默认情况下,该组顺序取决于数据类型s =[集团;grouphat]

  • 对于数字和逻辑向量,其顺序为的排序顺序S.

  • 对于分类向量,顺序为返回的顺序类别(S)

  • 对于其它数据类型,所述顺序是在第一出现的顺序S.

若要更改顺序,请指定grouporder

confusionmat函数把空的,'不明确的'的行和列中不包含这些值C

行和列的顺序C,作为数字向量、逻辑向量、分类向量或字符向量的单元格数组返回。如果集团grouphat字符数组、字符串数组或字符向量的单元格数组,然后是变量命令是字符向量的单元格数组。否则,命令是同类型的吗集团grouphat

选择功能

  • 使用confusionchart计算并绘制混淆矩阵。此外,confusionchart显示关于您的数据汇总统计数据和排序根据类明智精度(阳性预测值),类明智召回(真阳性率),或总数正确分类观测的混淆矩阵的类。

扩展功能

也可以看看

||

话题

介绍了在R2008b