Est-il possible de tracer la courbe roc pour différents classificateurs dans le même tracé en utilisant le package ROCR? J'ai essayé:
>plot(perf.neuralNet, colorize=TRUE)
>lines(perf.randomForest)
Mais je reçois:
Error en as.double(y) :
cannot coerce type 'S4' to vector of type 'double'
Je vous remercie!
Le problème avec votre approche lines
- est qu'il n'y a pas de générique S4
lignes fonction pour un objet de classe performance
défini dans le package ROCR
. Mais vous pouvez utiliser la fonction de tracé générique comme vous l'avez fait avec un add = TRUE
argument. Par exemple, cela provient en partie de la page d'exemple de ?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)
OU, vous pouvez stocker toutes vos prévisions dans une matrice et effectuer toutes les étapes suivantes en une seule:
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)
Btw, si pour une raison quelconque vous vouliez vraiment utiliser lines
pour tracer des courbes ROC consécutives, vous devriez faire qc. comme ça:
plot(perf)
lines([email protected][[1]], [email protected][[1]], col = 2)
Faire écho à @adibender et ajouter un commentaire: l'exemple ne couvre pas comment définir des couleurs distinctes pour chaque courbe individuelle en utilisant la deuxième approche (tracer tout à la fois). Dans ce cas, passez col comme liste:
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))
R a des fonctions pour dessiner plusieurs tracés dans une seule fenêtre. Et si le package ne prend pas en charge plusieurs tracés dans une seule fenêtre, vous pouvez résoudre le problème avec les instruments standard de R. Autre manière: Exemple de plusieurs ROC Article avec ce script: n exemple de ROC courbes traçant avec ROCR