我正在绘制一个模型的ROC曲线,该模型使用由插入符R包创建的测试/训练集 . 我或者要么没有输入正确的数据来绘制或遗漏了关于我的测试/训练集的创建 . 有见识吗?
*编辑正确答案
library(caret)
library(mlbench)
set.seed(506)
data(whas)
inTrain <- createDataPartition(y = whas$bin.frail,
p = .75, list = FALSE)
str(inTrain)
training <- whas[ inTrain,]
testing <- whas[-inTrain,]
nrow(training)
nrow(testing)
tc <- trainControl("cv", 10, savePredictions=T) #"cv" = cross-validation, 10-fold
mod1 <- train(bin.frail ~ ,
data = training ,
method = "glm" ,
family = binomial ,
trControl = tc)
library(pROC)
mod1pred<- predict(mod1, newdata=testingresponse="prob")
plot(roc(testing$bin.frail, mod1pred[[2]]), print.auc=TRUE, col="red",
xlim=c(0,1))
1 回答
如果没有可重现的答案,很难确定,但可能你的响应变量
bin.frail
不是数字 . 例如,它可以使用字母编码(例如,"Y","N");或者使用作为因子存储的数字 . 您可以使用is.numeric(whas$bin.frail)
进行检查 .作为旁注,在您对
roc()
的调用中,您的训练数据似乎正在创建mod1pred
,而testing$bin.frail
来自您的测试数据 . 您可以通过在创建mod1pred
时对predict
的调用添加newdata = testing
来更正此问题 .