classify関数によって得られた確率をROC曲線の出力をすることは可能でしょうか?
3 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Sae Onodera
am 9 Mai 2020
Kommentiert: Sae Onodera
am 10 Mai 2020
%% 微調整したネットワークを使用して検証イメージを分類
[YPred,probs] = classify(net,augimdsValidation);
% 正解率を表示
accuracy = mean(YPred == imdsValidation.Labels)
% 分類の混同行列を表示
C = confusionmat(imdsValidation.Labels,YPred)
confusionchart(C)
% ROC曲線の表示
[X,Y,T,AUC] = perfcurve(imdsTrain.Labels,probs,'anormaly')
AUC
plot(X,Y)
xlabel('False positive rate')
ylabel('True positive rate')
title('ROC for Classification')
画像の分類結果に関するROC曲線を出力したいのですが、classify関数を用いて画像の分類をし、そこで得られた確率(probs)を用いて、添付したコードの通り実行したところ、「スコアは浮動小数点のベクトルとして渡さなければなりません。」とエラーが出てきてしまいました。
2点質問があるのですが、
①classify関数によって得られた確率をROC曲線の出力をすることは可能でしょうか?
②①が可能である場合、どのように修正をすれば良いでしょうか?
よろしくお願いいたします。
0 Kommentare
Akzeptierte Antwort
Akira Agata
am 9 Mai 2020
classify 関数によって得られた確率(スコア)からROC曲線を出力をすることは可能です。そのためには、プログラムを若干修正する必要があります。
まず、perfcurve 関数への入力は、エラーメッセージにもあるように「スコアは浮動小数点のベクトルとして渡さなければなりません」。一方、classify 関数の出力するスコアはN行M列の配列(N: データ数、M: 分類クラスの数)です。このため、たとえば 'anomaly' というクラスが1番目のクラスの場合、以下のように修正するとROC曲線を出力できます。
[X,Y,T,AUC] = perfcurve(imdsTrain.Labels,probs(:,1),'anormaly');
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Detection finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!