2017-10-19 206 views
-2

我正在绘制使用由插入符R包创建的测试/火车集的模型的ROC曲线。我要么没有把正确的数据输入到绘图中,要么错过了创建我的测试/训练集的信息。任何见解?火车/测试设置在插入符R包中的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)) 
+3

在你的问题中包括一个[最小可重现的例子](https://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)将增加你获得答案的机会。 – jsb

+0

这两个班级不是'caret'返回概率吗?如果是这样,请确保只传递“正”类概率。 –

+0

什么软件包包含'whas'数据集?按照现状,我们无法重现您的问题。 – josliber

回答

0

很难知道肯定没有一个可重复的答案,但想必你的反应变量bin.frail不是数字。例如,它可以用字母(例如“Y”,“N”)编码;或者将数字存储为一个因素。您可以使用is.numeric(whas$bin.frail)进行检查。

请注意,在拨打roc()时,您看起来像是从您的训练数据中创建mod1pred,而testing$bin.frail来自您的测试数据。在创建mod1pred时,您可以通过将newdata = testing添加到predict来更正此问题。