26

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

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

しかし、私は得る:

エラー en as.double(y) : 型 'S4' を型 'double' のベクトルに変換できません

ありがとうございました!

4

3 に答える 3

41

あなたの -approach の問題は、パッケージで定義されたクラスのオブジェクトに対するlines一般的な行関数がないことです。ただし、追加の引数で行ったように、一般的なプロット関数を使用できます。たとえば、これは のサンプル ページの一部です。S4performanceROCRadd = 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)

または、すべての予測をマトリックスに保存し、その後のすべてのステップを 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 曲線をプロットするために本当に使用したい場合は、 sth を実行する必要があります。このような:

plot(perf) 
lines(perf2@x.values[[1]], perf2@y.values[[1]], col = 2)
于 2012-12-29T20:09:42.617 に答える
3

@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))
于 2015-12-30T20:28:28.830 に答える
1

Rには、1つのウィンドウに複数のプロットを描画する機能があります。また、パッケージが1つのウィンドウで複数のプロットをサポートしていない場合は、Rの標準的な計測器の問題を解決できます。他の方法:複数のROCの例 このスクリプトを使用した記事:ROCRを使用してプロットするROC曲線の例

于 2012-12-29T19:56:05.807 に答える