2012-12-29 16 views
19

ROCRパッケージを使用して、同じプロット内の異なる分類器のためのROC曲線をプロットすることは可能ですか?私が試した:1つのプロット内の複数のROC曲線ROCR

>plot(perf.neuralNet, colorize=TRUE) 
>lines(perf.randomForest) 

しかし、私は得る:

Error en as.double(y) : 
    cannot coerce type 'S4' to vector of type 'double' 

ありがとうございます!

答えて

30

問題はありませんがあることです汎用S4 のオブジェクトの関数は、ROCRパッケージで定義されています。しかし、追加のadd = TRUE引数を使用した場合と同様に、汎用プロット関数を使用することができます。たとえば、これは?plot.performanceの例のページから一部です:

library(ROCR) 
data(ROCR.simple) 
pred <- prediction(ROCR.simple$predictions, ROCR.simple$labels) 
pred2 <- prediction(abs(ROCR.simple$predictions + 
         rnorm(length(ROCR.simple$predictions), 0, 0.1)), 
     ROCR.simple$labels) 
perf <- performance(pred, "tpr", "fpr") 
perf2 <- performance(pred2, "tpr", "fpr") 
plot(perf, colorize = TRUE) 
plot(perf2, add = TRUE, colorize = TRUE) 

OR、あなたは行列内のすべてのあなたの予測を保存することができ、1に後続のすべてのステップを実行します。

preds <- cbind(p1 = ROCR.simple$predictions, 
       p2 = abs(ROCR.simple$predictions + 
       rnorm(length(ROCR.simple$predictions), 0, 0.1))) 

pred.mat <- prediction(preds, labels = matrix(ROCR.simple$labels, 
       nrow = length(ROCR.simple$labels), ncol = 2)) 

perf.mat <- performance(pred.mat, "tpr", "fpr") 
plot(perf.mat, colorize = TRUE) 

をところで、あなたの場合なんらかの理由で実際にlinesを使用して、連続したROC曲線をプロットしたいと思っていました。

plot(perf) 
lines([email protected][[1]], [email protected][[1]], col = 2) 
+1

優秀!まさに私が探していたもの! – kahlo

1

Rには、1つのウィンドウに複数のプロットを描画する機能があります。そして、パッケージが1つのウィンドウで複数のプロットをサポートしていない場合、あなたはR.その他の方法の標準機器に問題が解決することができます。このスクリプトでExample of several ROCs 記事:あなたのlinesアプローチ - とAn example of ROC curves plotting with ROCR

+0

ありがとう!唯一の問題は、このソリューションは相互検証データのように思われるため、どの曲線がどの分類子に属するかを区別するために凡例を追加することはできません。同じ窓にいくつかのプロットを描くための器具はどれですか? – kahlo

+0

function subplotを使用するか、このドキュメントを参照してください:[link] http://www.statmethods.net/advgraphs/layout.html – psyprog

2

@adibenderをエコー、およびコメントを追加:例では、(一度にすべてのプロット)は、第2を使用して、各個別の曲線アプローチのための別々の色を設定する方法をカバーしていないこのような。この場合、リストとしてcolを渡します。

library(ROCR) 
data(ROCR.hiv) 
x <- prediction(ROCR.hiv$hiv.nn$predictions, ROCR.hiv$hiv.nn$labels) 
ROC <- performance(x, "tpr", "fpr") 
plot(ROC, col = as.list(1:10)) 
関連する問題