什么';MATLAB中plotconfusion和Confusionmat函数的区别是什么?
我试图根据实际值和预测值显示我的混淆矩阵,同时使用了两个函数什么';MATLAB中plotconfusion和Confusionmat函数的区别是什么?,matlab,machine-learning,confusion-matrix,Matlab,Machine Learning,Confusion Matrix,我试图根据实际值和预测值显示我的混淆矩阵,同时使用了两个函数plotconfusion和Confusionmat。两者都给出了不同的结果。这对我来说真的很奇怪。似乎Confusionmat是plotconfusion的转置。如何在plotconflusion上绘制类似的Confusionmat结果 plotconfusion: 59 0 0 0 68 0 0 3 48 及 您已经正确地理解了事物-由plotconfusion生成的混淆矩
plotconfusion
和Confusionmat
。两者都给出了不同的结果。这对我来说真的很奇怪。似乎Confusionmat
是plotconfusion
的转置。如何在plotconflusion
上绘制类似的Confusionmat
结果
plotconfusion:
59 0 0
0 68 0
0 3 48
及
您已经正确地理解了事物-由
plotconfusion
生成的混淆矩阵是由confusionmat
生成的混淆矩阵的转置
这是记录在案的-在plotconflusion
的文档中,它说
行对应于预测类(输出类),列显示真实类(目标类)
而在confusionmat
的文档中,它说
C(i,j)是已知在组i中但预测在组j中的观察计数
如果您想在两者之间转换,只需使用“
”将它们转置即可
为什么是这样?主要是因为不太好的理由plotconfusion
来自神经网络工具箱,而confusionmat
来自统计工具箱,这两个工具箱具有不同的历史、用途和约定
统计工具箱一直是由MathWorks直接开发的。相比之下,神经网络工具箱最初是由外部学术作者开发的,由MathWorks进行营销和销售(尽管最近内部进行了大量开发)。早期版本的神经网络工具箱主要关注于神经网络在控制理论中的应用,而不是预测建模。因此工具箱有着不同的历史和目的,建立了一套不同的约定
如今,逐渐使工具箱在设计上更加一致和统一是有意义的,但这一点还没有实现。可能只是在轴上进行了锻造。在一个矩阵中,预测标签是垂直的,真实标签是水平的。另一方面,“绘图”预测标签是水平的,真实标签是垂直的。我不知道,因为我不使用matlab进行机器学习。但是如果你看一下你贴的矩阵就会明白。请注意,
“
不是转置,而是复共轭转置。如果由于某种原因计算出了复数,那么使用“
”会出现问题,因此可以显式使用转置(A)
,或者使用元素转置,”
。例如,请参见:Thank@Adrian,我知道'
和'
之间的区别,但在这里坚持这一点似乎有点迂腐,因为我们讨论的是一个混淆矩阵,其元素按定义是真实的。在这种情况下使用'
是非常常见的,也是完全可以接受的。即使在这种情况下,数字是真实的,在我看来,推广使用'
作为标准也是不好的。我在过去多次看到它适得其反,因为不同的原因people@LuisMendo对于那些在涉及复数的领域工作的人来说,我也看到了事与愿违的结果。对于从事统计或数据分析工作的人来说,我从来没有看到过它会适得其反,因为这些元素都是真实的;如果存在复数,你就有比仅仅得到你期望的共轭数更大的问题。当然,要让大家意识到这一区别,但如果我的代码使用'
比使用'
更自然,我认为这是完全可以接受的。如果你不同意,请投反对票!为什么在涉及复数的领域工作的人会适得其反?原因很简单,他们在一个涉及实数的领域工作时习惯了符号“
。
Confusionmat:
59 0 0
0 68 3
0 0 48