【轉載】使用Maltlab中的plotroc()函數繪製ROC曲線

原文自http://blog.csdn.net/fuhpi/article/details/8813455

  ROC曲線是通用的分類器評價工具,matlab函數中自帶了繪製該曲線的函數plotroc。
  plotroc函數的原型爲:plotroc(targets, outputs)
其中參數targets是一個矩陣,代表測試集,每一列表示一個測試樣本的標籤
如果有兩類樣本,比如第1,2,5個樣本屬於第1類,第3,4,6個樣本屬於第2類….則targets應爲:

1 1 0 0 1 0 ...
0 0 1 1 0 1 ...

  如果只有一類樣本,包含了負樣本,則只要一行,用1表示正樣本,0表示負樣本即可,比如targets爲:

1 0 1 1 0 0 0 0 1 ...

  參數outputs也是一個矩陣,代表分類結果,同樣每一列表示一個測試樣本的分類結果
  同樣如果有兩類樣本,則應有兩個分類器,每一列記錄了每個測試樣本在兩個分類器上的得分,此時outputs爲:
  

0.8 0.85 0.2 0.75 0.21 ...
0.8 0.01 0.9 0.23 0.67 ...

  如果只有一類,則outputs只有一行,如:
  

0.8 0.6 0.8 0.7 0.05 0.3 0.03 ...

注意,得分必須在[0, 1]的區間內,可以自己規約一下。
  我們將相應的測試標籤targets和對應的分類得分outputs輸入plotroc中就可以繪製出相應的ROC曲線了。
  有人問起,我也就在網上搜了一下,發現還有很多人不會用,寫下來以供參考,歡迎指正。

補記:似乎使用matlab中的plot()與roc()組合也能完成ROC曲線繪製。

matlab中還給出了一個例子,幫助信息如下:

–> help plotroc
plotroc Plot receiver operating characteristic.

plotroc(targets,outputs) takes target data in 1-of-N form (each column
vector is all zeros with a single 1 indicating the class number), and
output data and generates a receiver operating characteristic plot.

The best classifications will show the receiver operating line hugging
the left and top sides of the plots axis.

plotroc(targets,1,outputs1,’name1’,targets2,outputs2,names2,…)
generates a variable number of confusion plots in one figure.

Here a pattern recognition network is trained and its accuracy plotted:

[x,t] = simpleclass_dataset;
net = patternnet(10);
net = train(net,x,t);
y = net(x);
plotroc(t,y);

See also roc, plotconfusion, ploterrhist, plotregression.

Reference page in Help browser
   doc plotroc
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章