来自 train/test 的 ROC 曲线设置在插入符 R 包中
ROC curve from train/test set in caret R package
我正在绘制一个模型的 ROC 曲线,该模型使用 test/train 集,该集是通过 caret R 包创建的。我要么没有输入正确的数据来绘制,要么遗漏了一些关于创建我的 test/train 集的信息。有什么见解吗??
*已编辑正确答案
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))
如果没有可重现的答案,很难确定,但可能您的响应变量 bin.frail
不是数字。例如,它可能使用字母进行编码(例如 "Y"、"N");或作为一个因素存储的数字。您可以使用 is.numeric(whas$bin.frail)
.
进行检查
附带说明一下,在您对 roc()
的调用中,看起来 mod1pred
是根据您的训练数据创建的,而 testing$bin.frail
是根据您的测试数据创建的。您可以通过在创建 mod1pred
.
时将 newdata = testing
添加到对 predict
的调用来更正此问题
我正在绘制一个模型的 ROC 曲线,该模型使用 test/train 集,该集是通过 caret R 包创建的。我要么没有输入正确的数据来绘制,要么遗漏了一些关于创建我的 test/train 集的信息。有什么见解吗??
*已编辑正确答案
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))
如果没有可重现的答案,很难确定,但可能您的响应变量 bin.frail
不是数字。例如,它可能使用字母进行编码(例如 "Y"、"N");或作为一个因素存储的数字。您可以使用 is.numeric(whas$bin.frail)
.
附带说明一下,在您对 roc()
的调用中,看起来 mod1pred
是根据您的训练数据创建的,而 testing$bin.frail
是根据您的测试数据创建的。您可以通过在创建 mod1pred
.
newdata = testing
添加到对 predict
的调用来更正此问题