2017-07-07 27 views
2

我試圖同時使用這兩種功能plotconfusionConfusionmat顯示從實際和預測值我的混淆矩陣。兩者都有不同的結果。對我來說真的很奇怪。看來Confusionmatplotconfusion的轉置。我應該怎麼做 plotconfusion的類似結果?MATLAB中的plotconfusion和Confusionmat函數有什麼區別?

plotconfusion:  

59  0  0 
0 68  0 
0  3  48 

而且

Confusionmat: 

59  0  0 
0 68  3 
0  0  48 
+0

可能只是swaped軸。在一個矩陣預測標籤中是垂直的而真標籤是水平的。在另一個「情節」預測標籤是水平和真正的標籤垂直。我不知道,因爲我不使用matlab機器學習的東西。但是如果你看看你發佈的矩陣,那將是有意義的。 –

回答

-1

您已經瞭解正確的事情 - 通過plotconfusion產生的混淆矩陣是confusionmat產生的混淆矩陣的轉置。

這是記錄 - 在doc爲plotconfusion它說

行對應於預測的類(輸出級),並且列顯示真類(目標類)。

和在doc爲confusionmat它說

C(I,J)是已知在組i觀察的計數,但預測爲在組j

如果你想在兩者之間進行轉換,只需使用'轉置它們。

爲什麼會這樣呢?主要原因不是很好。 plotconfusion是從神經網絡工具箱,而confusionmat是從統計工具箱,和兩個工具箱有着不同的歷史,宗旨和約定。

統計工具箱一直MathWorks公司直接開發。相比之下,神經網絡工具箱最初是由外部學術作者開發的,由MathWorks銷售和銷售(儘管最近大量的開發已經被內部引入)。神經網絡工具箱的早期版本大多集中在神經網絡控制理論的應用,而不是預測建模。所以工具箱有不同的歷史和目的,並建立了一套不同的約定。

這將是有意義時下逐步使工具箱更加一致,並在他們的設計統一,但尚未完成。

+4

請注意'''不是轉置,而是*複共軛轉置*。如果出於某種原因複雜的數字出現在計算中,那麼使用'''就會出錯,所以要麼明確使用「轉置(A)」,要麼使用*元素轉置*,'。'。見例如[這個問題](https://stackoverflow.com/q/25150027/5211833) – Adriaan

+0

感謝@Adriaan,我知道'''和'.''之間的區別,但它似乎有點迂腐堅持在這裏,因爲我們在談論一個混淆矩陣,其中的元素根據定義是真實的。在這種情況下使用''''是非常常見的,也是完全可以接受的。 –

+1

即使在這種情況下數字是真實的,在我看來,推廣使用'''作爲標準是不好的。過去我曾多次看到它適合不同的人,對於不同的人 –

相關問題