confusionmat

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

描述

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

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

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

例子

全部折叠

显示对于具有两个错误分类与一个缺少的分类数据的混淆矩阵。

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

g1 = [3 2 2 3 11 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对待为NaN在分组变量值G2的行和列中不包含该值C

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

confusionchart (C)

你不需要先计算混淆矩阵,然后绘制。取而代之的是,通过使用直接从真实的和预测的标签绘制混淆矩阵图表confusionchart

厘米= confusionchart(G1,G2)

属性:NormalizedValues: [4x4 double]类标签:[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
cm.ClassLabels
ans =4×11 2 3 4

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

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

g1 = [3 2 2 3 11 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对待为NaN在分组变量值G2的行和列中不包含该值C

上的样本进行分类fisheriris数据集并显示所得到的分类的混淆矩阵。

加载费舍尔的虹膜数据集。

加载fisheriris

随机数据测量和团体。

rng (0,“扭腰”);%用于重现numObs =长度(物种);p = randperm (numObs);量=量(p:);物种=物种(p);

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

半=地板(numObs / 2);训练= MEAS(1:半,:);trainingSpecies =物种(1:半);MDL = fitcdiscr(培训,trainingSpecies);

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

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

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

基团=物种(半+ 1:结束);[C,为了] = confusionmat(基,grouphat,“秩序”,{'setosa'“多色的”“弗吉尼亚”})
C =3×329 0 0 0 22 2 0 0 22
为了=3 x1细胞{ 'setosa'} { '云芝'} { '锦葵'}

混淆矩阵显示,属于setosa和锦葵测量被正确地分类,而属于两个云芝测量的被误分类为锦葵。输出订单包含该序列中的行数和混淆矩阵的列的上述群阶数中指定的顺序{ 'setosa', '云芝', '锦葵'}

的一个高大的阵列上执行分类fisheriris数据集,通过使用所述计算所述已知和预测的高标签混淆矩阵confusionmat函数,并绘制混淆矩阵使用confusionchart功能。

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

加载费舍尔的虹膜数据集。

加载fisheriris

转换在存储器阵列MEAS物种高大的数组。

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

在高数组中找到观测的数量。

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

设置随机数生成器使用的种子rngtallrng为了重复性,随机选取训练样本。结果可能会因worker的数量和tall数组的执行环境而有所不同。有关详细信息,请参见控制代码运行的位置(MATLAB)。

RNG('默认')tallrng('默认')numTrain =地板(numObs / 2);[txTrain,trIdx] = datasample(TX,numTrain,“替换”,假);tyTrain = TY(trIdx);

对训练样本拟合决策树分类器模型。

MDL = fitctree(txTrain,tyTrain);
评估使用并行池“本地”高表达: - 的2遍1:完成在4.4秒 - 第二遍2:在2.8秒评价完成在9.9秒完成评估使用并行池“本地”高表达: - 第一遍的4:完成在1.9秒 - 通行证2的4:完成在2.3秒 - 通行证3 4的:在4.4秒完成 - 通行证4 4的:4.1秒评价完成在16秒完成评估使用并行池'高表达本地':4  - 通行证1:在1.3秒完成 - 通行证2 4:在1.7秒完成 - 通行证3 4的:在3秒完成 - 通行证4 4的:在2.6秒评价完成在12秒完成评价高使用并行池“本地”表达: -  4通行证1:在1.1秒完成 - 通行证2 4:在1.9秒完成 -  4通过3:完成在2.7秒 - 通行证4 4的:在2.4秒评价完成在11秒完成评估使用并行池“本地”高表达: -  4通行证1:已完成在1.2秒 - 通行证2 4:在2秒完成 -  P的4屁股3:在3.2秒完成 - 通行证4 4的:在2.8秒评价完成在12秒完成

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

txTest = TX(〜trIdx,:);标记=预测(MDL,txTest);

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

tyTest = TY(〜trIdx);[C,为了] = confusionmat(tyTest,标签)
C = MxNx……高大的数组?吗?吗?…吗?吗?吗?…吗? ? ? ... : : : : : : order = MxNx... tall array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : :

使用收集函数来执行延迟计算和返回的结果confusionmat在记忆中。

收集(C)
评估使用并行池“本地”高表达: - 的1遍1:在2.2秒评价完成在3.3秒完成
ans =3×320 0 0 1 25 5 0 0 24
收集(顺序)
评估使用并行池“本地”高表达:评价0.041秒完成
ans =3 x1细胞{ 'setosa'} { '云芝'} { '锦葵'}

混淆矩阵显示,三次测量的云芝类会被误判。所有属于setosa和锦葵测量被正确分类。

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

厘米= confusionchart (tyTest标签)
使用并行池“local”计算tall expression: -通过1 / 1:完成1秒计算完成1.9秒计算tall expression使用并行池“local”:通过1 / 1:完成1.2秒计算完成2秒

厘米= ConfusionMatrixChart与属性:NormalizedValues:[3×3双] ClassLabels:{3×1细胞}显示所有属性

输入参数

全部折叠

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

是相同的类型的一个分组变量grouphat。该参数必须具有相同的若干意见作为grouphat,如在分组变量。该confusionmat函数将字符阵列和串数组作为字符向量的单元阵列。此外,confusionmat对待为NaN空的,“未定义”如缺失值,不指望他们为不同的群体或类别。

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

数据类型:||合乎逻辑|烧焦||细胞|明确的

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

grouphat是相同的类型的一个分组变量。该grouphat参数必须具有相同的若干意见作为,如在分组变量。该confusionmat函数将字符阵列和串数组作为字符向量的单元阵列。此外,confusionmat对待为NaN空的,“未定义”grouphat如缺失值,不指望他们为不同的群体或类别。

例:[1 0 0 1 0]

数据类型:||合乎逻辑|烧焦||细胞|明确的

群阶数,指定为数值向量,逻辑向量,字符数组,字符串数组,字符向量的单元阵列,或分类矢量。

grouporder是包含在所有的不同元件的分组变量grouphat。指定grouporder的行和列的顺序C。如果grouporder包含不在元素grouphat在相应的条目C0

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

  • 对于数值和逻辑向量,顺序为的排序顺序小号

  • 对于分类矢量,顺序是由返回的顺序类别(S)

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

例:'订单',{ 'setosa', '云芝', '锦葵'}

数据类型:||合乎逻辑|烧焦||细胞|明确的

输出参数

全部折叠

混淆矩阵,以方阵的形式返回,其大小等于中不同元素的总数grouphat参数。C (i, j)被观察的计数已知在组一世但被预测是一个群体Ĵ

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

  • 对于数值和逻辑向量,顺序为的排序顺序小号

  • 对于分类矢量,顺序是由返回的顺序类别(S)

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

要更改顺序,指定grouporder

confusionmat函数把为NaN空的,“未定义”的行和列中不包括它们C

行和列的顺序C,以数字向量、逻辑向量、分类向量或字符向量的单元数组的形式返回。如果grouphat是字符数组,字符串数组,或字符向量的单元阵列,则变量订单是字符向量的单元格数组。否则,订单是与grouphat

选择功能

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

扩展功能

也可以看看

||

主题

介绍了在R2008b