質問: 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点質問があるのですが、 1classify関数によって得られた確率をroc曲線の出力をすることは可能でしょうか? 21が可能である場合、どのように修正をすれば良いでしょうか? よろしくお願いいたします。
回答: classify 関数によって得られた確率(スコア)からroc曲線を出力をすることは可能です。そのためには、プログラムを若干修正する必要があります。 まず、perfcurve 関数への入力は、エラーメッセージにもあるように「スコアは浮動小数点のベクトルとして渡さなければなりません」。一方、classify 関数の出力するスコアはn行m列の配列(n: データ数、m: 分類クラスの数)です。このため、たとえば 'anomaly' というクラスが1番目のクラスの場合、以下のように修正するとroc曲線を出力できます。 [x,y,t,auc] = perfcurve(imdstrain.labels,probs(:,1),'anormaly');