regresion - Múltiples curvas ROC en una parcela ROCR
interpretación de curvas roc (3)
¿Es posible trazar la curva roc para diferentes clasificadores en la misma parcela usando el paquete ROCR? He intentado:
>plot(perf.neuralNet, colorize=TRUE)
>lines(perf.randomForest)
Pero me sale:
Error en as.double(y) :
cannot coerce type ''S4'' to vector of type ''double''
¡Gracias!
El problema con sus lines
enfoque es que no hay una función genérica de líneas S4
para un objeto de performance
de clase definido en el paquete ROCR
. Pero puede usar la función de trazado genérico como lo hizo con un argumento adicional add = TRUE
. Por ejemplo, esto es en parte de la página de ejemplo 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)
O, puede almacenar todas sus predicciones en una matriz y realizar todos los pasos subsiguientes en uno:
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)
Por cierto, si por alguna razón realmente quisiera usar lines
para trazar curvas ROC consecutivas, tendría que hacer algo. Me gusta esto:
plot(perf)
lines([email protected][[1]], [email protected][[1]], col = 2)
Haciéndose eco de @adibender y agregando un comentario: el ejemplo no cubre cómo establecer colores separados para cada curva individual utilizando el segundo enfoque (trazar todo de una vez). En este caso, pase col como una lista:
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 tiene funciones para dibujar varias parcelas en una ventana. Y si el paquete no admite varios gráficos en una sola ventana, puede resolver el problema con instrumentos estándar de R. De otra manera: Ejemplo de varios artículos ROC con este script: Un ejemplo de trazado de curvas ROC con ROCR