基于插入符号训练数据的ROC曲线
使用R包插入符号,如何根据train()函数的交叉验证结果生成ROC曲线 比如说,我做了以下几件事:基于插入符号训练数据的ROC曲线,r,r-caret,roc,R,R Caret,Roc,使用R包插入符号,如何根据train()函数的交叉验证结果生成ROC曲线 比如说,我做了以下几件事: data(Sonar) ctrl <- trainControl(method="cv", summaryFunction=twoClassSummary, classProbs=T) rfFit <- train(Class ~ ., data=Sonar, method="rf", preProc=c("center", "scale"), trContr
data(Sonar)
ctrl <- trainControl(method="cv",
summaryFunction=twoClassSummary,
classProbs=T)
rfFit <- train(Class ~ ., data=Sonar,
method="rf", preProc=c("center", "scale"),
trControl=ctrl)
数据(声纳)
ctrl在ctrl
中只缺少savePredictions=TRUE
参数(这也适用于其他重采样方法):
在这里,我正在修改@Theie1e的绘图,其他人可能会觉得这很有用
训练模型并进行预测
库(插入符号)
图书馆(GG2)
图书馆(mlbench)
图书馆(plotROC)
数据(声纳)
ctrl已于2019年更新。这是最简单的方法。从插入符号对象获取最佳参数,然后概率计算许多度量和图,包括:ROC曲线、PR曲线、PRG曲线和校准曲线。可以将来自不同模型的多个对象放入其中以比较结果
library(MLeval)
library(caret)
data(Sonar)
ctrl <- trainControl(method="cv",
summaryFunction=twoClassSummary,
classProbs=T)
rfFit <- train(Class ~ ., data=Sonar,
method="rf", preProc=c("center", "scale"),
trControl=ctrl)
## run MLeval
res <- evalm(rfFit)
## get ROC
res$roc
## get calibration curve
res$cc
## get precision recall gain curve
res$prg
库(MLeval)
图书馆(插入符号)
数据(声纳)
ctrl不,这不是答案。首先,现代版的插入符号没有这个功能。其次,函数需要一个“变量来切割”——具体来说,就是预测概率,但是我如何从train()函数返回的对象中获得这些呢?你关于平均许多AUC与从OOB样本创建的AUC的比较的评论是正确的。它们会有些不同。可以使用rfFit$finalModel$mtry提取finalModel mtry
我尝试了您的解决方案,但得到了一个错误:evalm中的错误(rfFit):在插入符号输出中找不到概率
@Bolle我得到了与您相同的结果。您需要在TrainControls中设置savePredictions=TRUE,现在如何将此最佳截止应用于测试数据集,并使用MLeval获得混淆矩阵?
library(ggplot2)
library(plotROC)
ggplot(rfFit$pred[selectedIndices, ],
aes(m = M, d = factor(obs, levels = c("R", "M")))) +
geom_roc(hjust = -0.4, vjust = 1.5) + coord_equal()
library(caret)
library(ggplot2)
library(mlbench)
library(plotROC)
data(Sonar)
ctrl <- trainControl(method="cv", summaryFunction=twoClassSummary, classProbs=T,
savePredictions = T)
rfFit <- train(Class ~ ., data=Sonar, method="rf", preProc=c("center", "scale"),
trControl=ctrl)
# Select a parameter setting
selectedIndices <- rfFit$pred$mtry == 2
g <- ggplot(rfFit$pred[selectedIndices, ], aes(m=M, d=factor(obs, levels = c("R", "M")))) +
geom_roc(n.cuts=0) +
coord_equal() +
style_roc()
g + annotate("text", x=0.75, y=0.25, label=paste("AUC =", round((calc_auc(g))$AUC, 4)))
library(MLeval)
library(caret)
data(Sonar)
ctrl <- trainControl(method="cv",
summaryFunction=twoClassSummary,
classProbs=T)
rfFit <- train(Class ~ ., data=Sonar,
method="rf", preProc=c("center", "scale"),
trControl=ctrl)
## run MLeval
res <- evalm(rfFit)
## get ROC
res$roc
## get calibration curve
res$cc
## get precision recall gain curve
res$prg