我尝试使用plotconfusion和Confusionmat这两个函数来显示我的实际和预测值的混淆矩阵,但结果却不同。这对我来说很奇怪。看起来Confusionmat是plotconfusion的转置。我该怎么做才能在plotconfusion上显示与Confusionmat相似的结果呢?
plotconfusion: 59 0 00 68 00 3 48
和
Confusionmat:59 0 00 68 30 0 48
回答:
你的理解是正确的——plotconfusion生成的混淆矩阵是confusionmat生成的混淆矩阵的转置。
这在文档中有说明——在plotconfusion的文档中提到
行对应预测类别(输出类别),列显示真实类别(目标类别)。
而在confusionmat的文档中提到
C(i,j) 是已知属于第i组但预测为第j组的观测值计数
如果你想在这两者之间转换,只需使用'进行转置即可。
为什么会这样?主要是因为不太好的原因。plotconfusion来自神经网络工具箱,而confusionmat来自统计工具箱,这两个工具箱有不同的历史、目的和惯例。
统计工具箱一直是由MathWorks直接开发的。相比之下,神经网络工具箱最初是由外部学术作者开发,并由MathWorks市场营销和销售(尽管最近许多开发工作已被内部化)。早期版本的神经网络工具箱主要关注将神经网络应用于控制理论,而不是预测建模。因此,这两个工具箱有不同的历史和目的,并建立了一套不同的惯例。
现在看来,应该逐步使这些工具箱在设计上更加一致和统一,但这还没有实现。