2017-10-19 40 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來更正此問題。