主要内容

confusionmat

计算分类问题的混淆矩阵

描述

例子

C= confusionmat (集团grouphat返回混淆矩阵C由已知组和预测组确定集团而且grouphat,分别。

例子

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

例子

C订单= confusimat (___的行和列的顺序C在变量中订单使用以前语法中的任何输入参数。

例子

全部折叠

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

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

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

返回混淆矩阵。

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

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

混淆矩阵表明,组1中已知的两个数据点被正确分类。对于第2组,有一个数据点被错误地分类到第3组。此外,已知属于第3组的一个数据点被错误地归类到第4组。confusionmatg2的行和列中未包含该值C

将混淆矩阵绘制为混淆矩阵图confusionchart

confusionchart (C)

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

你不需要先计算混淆矩阵,然后绘制它。相反,通过使用,直接从真实和预测的标签绘制混淆矩阵图confusionchart

Cm =混淆图(g1,g2)

图包含一个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 0 1 0 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 = confismat (g1,g2,“秩序”,[4 3 2 1])
C =4×40 0 0 0 1 0 0 0 1 1 0 0 0 0 2

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

混淆矩阵的第二行C显示已知在第3组中的一个数据点被错误地分类到第4组。第三行C显示属于组2的一个数据点被错误地分类到组3,第四行显示已知属于组1的两个数据点被正确地分类。confusionmatg2的行和列中未包含该值C

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

加载费雪的虹膜数据集。

负载fisheriris

将数据中的测量值和分组随机化。

rng (0,“旋风”);%用于再现性numObs =长度(物种);p = randperm(numObs);Meas = Meas (p,:);Species = Species (p);

通过使用数据的前半部分的测量值来训练一个判别分析分类器。

half = floor(numObs/2);训练= meas(1:一半,:);trainingSpecies =物种(1:一半);Mdl = fitcdiscr(training,trainingSpecies);

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

Sample = meas(half+1:end,:);grouphat = predict(Mdl,样本);

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

Group = species(half+1:结束);[C,order] = confismat (group,grouphat,“秩序”, {“setosa”“多色的”“virginica”})
C =3×329 0 0 0 22 2 0 0 22
订单=3 x1细胞{'setosa'} {'versicolor'} {'virginica'}

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

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

在高数组上执行计算时,MATLAB®使用并行池(如果有并行计算工具箱™,则默认为并行池)或本地MATLAB会话。如果要在具有并行计算工具箱时使用本地MATLAB会话运行示例,可以使用mapreduce函数。

加载费雪的虹膜数据集。

负载fisheriris

转换内存中的数组而且物种到高数组。

Tx =高(平均);
使用“本地”配置文件启动并行池(parpool)…连接到并行池(工人数:6)。
Ty =高(物种);

求高数组中观测值的个数。

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

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

rng (“默认”) tallrng (“默认”) numTrain = floor(numObs/2);[txTrain,trIdx] = datasample(tx,numTrain,“替换”、假);tyTrain = ty(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秒内完成

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

txTest = tx(~trIdx,:);label = predict(mdl,txTest);

计算结果分类的混淆矩阵。

tyTest = ty(~trIdx);[C,order] = confismat (tyTest,label)
C = m×n×…高阵???...???...? ? ? ... : : : : : : Preview deferred. Learn more. order = M×N×... tall array ? ? ? ... ? ? ? ... ? ? ? ... : : : : : : Preview deferred. Learn more.

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

收集(C)
使用并行池“本地”评估tall表达式:-通过1 / 1:在1.9秒内完成评估,在2.3秒内完成
ans =3×320 0 0 1 30 20 0 22
收集(顺序)
使用并行池“本地”计算tall表达式:在0.032秒内完成计算
ans =3×1细胞{'setosa'} {'versicolor'} {'virginica'}

混淆矩阵显示了彩色类中的三个测量值是错误分类的。所有属于setosa和virginica的测量都被正确分类。

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

cm =混淆表(tyTest,label)
使用并行池“本地”评估高表达式:-通过1 / 1:在0.34秒内完成评估,在0.6秒内完成评估,使用并行池“本地”评估高表达式:-通过1 / 1:在0.48秒内完成评估,在0.67秒内完成

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 = [group;grouphat]

  • 对于数值向量和逻辑向量,顺序是的排序顺序年代

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

  • 对于其他数据类型,顺序为中首次出现的顺序年代

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

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

输出参数

全部折叠

混淆矩阵,返回为方阵,其大小等于中不同元素的总数集团而且grouphat参数。C (i, j)观察数是否已知为一组但预计在小组j

的行和列C具有相同组索引的相同顺序。缺省情况下,组顺序取决于的数据类型S = [group;grouphat]

  • 对于数值向量和逻辑向量,顺序是的排序顺序年代

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

  • 对于其他数据类型,顺序为中首次出现的顺序年代

若要更改顺序,请指定grouporder

confusionmat函数把,空,和“定义”的行和列中不包括分组变量中的值C

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

选择功能

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

扩展功能

版本历史

在R2008b中引入