J'ai adapté un modèle SVM et créé la courbe ROC avec le package ROCR. Comment puis-je calculer l'aire sous la courbe (AUC)?
set.seed(1)
tune.out=tune(svm ,Negative~.-Positive, data=trainSparse, kernel ="radial",ranges=list(cost=c(0.1,1,10,100,1000),gamma=c(0.5,1,2,3,4) ))
summary(tune.out)
best=tune.out$best.model
##prediction on the test set
ypred = predict(best,testSparse, type = "class")
table(testSparse$Negative,ypred)
###Roc curve
yhat.opt = predict(best,testSparse,decision.values = TRUE)
fitted.opt = attributes(yhat.opt)$decision.values
rocplot(fitted.opt,testSparse ["Negative"], main = "Test Data")##
Votre exemple ne semble pas être complet. Je ne peux donc pas sembler capable de l'exécuter et de le modifier en conséquence, mais essayez de brancher quelque chose dans le sens de:
...
prediction.obj <- prediction(...)
perf <- performance(prediction.obj, measure = "auc")
print("AUC: ", [email protected])
Vous pouvez l'ajouter après le code de sandipan , qui vous donne l'intrigue seul.
Reportez-vous au manuel ROCR pour performance
, page 5: ftp://ftp.auckland.ac.nz/pub/software/CRAN/doc/packages/ROCR.pdf
"auc"
est l’une des mesures possibles que performance
peut donner.
Commencez avec la méthode prediction
du package ROCR
.
pred_ROCR <- prediction(df$probabilities, df$target)
pour obtenir le ROC dans une parcelle:
roc_ROCR <- performance(pred_ROCR, measure = "tpr", x.measure = "fpr")
plot(roc_ROCR, main = "ROC curve", colorize = T)
abline(a = 0, b = 1)
et obtenez la valeur AUC:
auc_ROCR <- performance(pred_ROCR, measure = "auc")
auc_ROCR <- [email protected][[1]]
Essaye ça:
tune.out=tune(svm ,Negative~.-Positive, data=trainSparse, kernel ="radial",
ranges=list(cost=c(0.1,1,10,100,1000),gamma=c(0.5,1,2,3,4),
probability = TRUE)) # train svm with probability option true
summary(tune.out)
best=tune.out$best.model
yhat.opt = predict(best,testSparse,probability = TRUE)
# Roc curve
library(ROCR)
# choose the probability column carefully, it may be
# probabilities[,1] or probabilities[,2], depending on your factor levels
pred <- prediction(attributes(yhat.opt)$probabilities[,2], testSparse$Negative)
perf <- performance(pred,"tpr","fpr")
plot(perf,colorize=TRUE)
Calculer l'ASC
# Outcome Flag & Predicted probability
roc_val <-roc(testing.label,gbmPred)
plot(roc_val,col='blue')
auc(roc_val)