どのようにして、CN​Nの識別結果について​混合行列でプロットす​ることができますか?

7 ビュー (過去 30 日間)
MathWorks Support Team
MathWorks Support Team 2017 年 11 月 27 日
回答済み: MathWorks Support Team 2017 年 11 月 27 日
Neural Network Toolbox で提供される例題「分類用のシンプルな深層学習ネットワークの作成」 において CNNを使って手書き数字の識別例があります。
この例題では、モデル作成後、テスト画像を入力して、モデル出力と教師の精度を単純にパーセンテージであらわしていますが、混合行列でプロットするためにはどのようにすればよいでしょうか?
 

採用された回答

MathWorks Support Team
MathWorks Support Team 2017 年 11 月 30 日
Statistics and Machine Learning Toolbox をお持ちの場合
Statistics and Machine Learning Toolbox で提供される confusionmat 関数および、 heatmap 関数の組み合わせより混合行列をプロットすることができます。
 
>> [cmat,classNames] = confusionmat(TTest, YTest);
>> h = heatmap(classNames, classNames, cmat)
Statistics and Machine Learning Toolbox をお持ちでない場合
Neural Network Toolbox に、 plotconfusion 関数が用意されています。 
仕様として、category 配列を直接取り扱うことができないため、 一旦、double型に変換して、 識別番号0,1,2, ~ 9 として出力する必要があります。 
また、識別番号0を (1,0,0,0,0,0,0,0,0,0), 識別番号2 を(0,1,0,0,0,0,0,0,0,0) 等とした2値化する必要があります。 
そのため、 該当のスクリプトにおいては、 プログラム末尾に下記のように追記頂く必要があります。 
 
vec1 = ind2vec(double(TTest).',10)
vec2 = ind2vec(double(YTest).',10)
plotconfusion(vec1, vec2)

その他の回答 (0 件)

タグ

タグが未入力です。

製品


リリース

R2017a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!