classify関数によって得られた確率をROC曲線の出力をすることは可能でしょうか?
9 views (last 30 days)
Show older comments
%% 微調整したネットワークを使用して検証イメージを分類
[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 Comments
Accepted Answer
Akira Agata
on 9 May 2020
classify 関数によって得られた確率(スコア)からROC曲線を出力をすることは可能です。そのためには、プログラムを若干修正する必要があります。
まず、perfcurve 関数への入力は、エラーメッセージにもあるように「スコアは浮動小数点のベクトルとして渡さなければなりません」。一方、classify 関数の出力するスコアはN行M列の配列(N: データ数、M: 分類クラスの数)です。このため、たとえば 'anomaly' というクラスが1番目のクラスの場合、以下のように修正するとROC曲線を出力できます。
[X,Y,T,AUC] = perfcurve(imdsTrain.Labels,probs(:,1),'anormaly');
More Answers (0)
See Also
Categories
Find more on Detection in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!