MATLAB 中的 plotconfusion 和 Confusionmat 函数有什么区别?

What's the difference between plotconfusion and Confusionmat function in MATLAB?

我尝试在同时使用函数 plotconfusionConfusionmat 时根据实际值和预测值显示我的混淆矩阵。两者给出不同的结果。这对我来说真的很奇怪。似乎 Confusionmatplotconfusion 的转置。我应该怎么做才能在 plotconfusion 上绘制 Confusionmat 的类似结果?

plotconfusion:    

59     0     0
0    68      0
0     3     48

Confusionmat:

59     0     0
0    68      3
0     0     48

您理解正确 - plotconfusion 生成的混淆矩阵是 confusionmat 生成的混淆矩阵的转置。

这已记录在案 - 在 plotconfusion 的文档中说

the rows correspond to the predicted class (Output Class), and the columns show the true class (Target Class).

confusionmat 的文档中说

C(i,j) is a count of observations known to be in group i but predicted to be in group j

如果你想在两者之间转换,只需使用 '.

调换它们

为什么会这样?主要是出于不太充分的理由。 plotconfusion 来自 Neural Network Toolbox,而 confusionmat 来自 Statistics Toolbox,这两个工具箱有不同的历史、目的和约定。

Statistics Toolbox 一直由 MathWorks 直接开发。相比之下,Neural Network Toolbox 最初由外部学术作者开发,并由 MathWorks 进行营销和销售(尽管最近在内部进行了很多开发)。 Neural Network Toolbox 的早期版本主要侧重于将神经网络应用于控制理论,而不是预测建模。所以工具箱有不同的历史和用途,并建立了一套不同的约定。

现在逐渐使工具箱在设计上更加一致和统一是有意义的,但这还没有完成。