主要内容

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 1 1 0 0 0 1 1 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财产。使用点符号显示这些属性。

厘米。NormalizedValues
ans =4×42 0 0 0 1 1 0 0 0 1 1 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 1 0 0 0 1 1 1 0 0 0 0 2 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);

使用训练过的分类器预测数据后半部分的测量值的标签。

示例=量(5 + 1:最终,);grouphat =预测(Mdl、样本);

指定分组顺序并显示产生的分类的混淆矩阵。

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

混淆矩阵表明,属于setosa和virginica的测度被正确分类,而属于versicolor的两个测度被错误分类为virginica。输出订单包含由组顺序指定的序列中混淆矩阵的行和列的顺序{“setosa”、“癣”、“virginica '}

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

当您在高数组上执行计算时,MATLAB®使用一个并行池(如果您有parallel Computing Toolbox™,则默认)或本地MATLAB会话。如果您希望在拥有Parallel Computing Toolbox时使用本地MATLAB会话运行该示例,则可以通过使用mapreduce函数。

载入费雪的虹膜数据集。

负载fisheriris

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

tx =高(量);
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:6)。
泰=高(物种);

求高阵中观测的次数。

numObs =收集(长度(ty));% gather将高数组收集到内存中

使用。设置随机数生成器的种子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 =泰(~ 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
收集(顺序)
使用Parallel Pool 'local'计算tall表达式:计算在0.032秒内完成
ans =3×1细胞{'setosa'} {'versicolor'} {'virginica'}

混淆矩阵表明,花色类中的三个测量值是错误分类的。所有属于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]

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

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

  • 对于其他数据类型,顺序是第一次出现的顺序年代

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

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

输出参数

全部折叠

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

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

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

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

  • 对于其他数据类型,顺序是第一次出现的顺序年代

若要更改顺序,请指定grouporder

confusionmat函数把空的,“定义”的行和列中不包含这些值C

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

选择功能

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

扩展功能

介绍了R2008b