2017-10-19 1 views
-2

캐럿 R 패키지로 생성 된 테스트/열차 세트를 사용하는 모델의 ROC 커브를 플로팅하기 위해 작업 중입니다. 플롯에 올바른 데이터를 넣거나 테스트/기차 세트를 만드는 것에 대해 빠뜨린 것입니다. 어떤 통찰력 ??캐럿 R 패키지의 열차/테스트 세트에서 ROC 커브

* 정답과 편집

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

'캐럿'이 두 클래스의 확률을 반환하지 않습니까? 그렇다면 '긍정적 인'클래스 확률 만'roc'에 전달했는지 확인하십시오. –

+0

어떤 패키지가'whas' 데이터 세트를 포함하고 있습니까? 우리는 귀하의 문제를 재현 할 수 없습니다. – josliber

답변

0

그것은 재현 대답없이 확실히 알고 어렵지만, 아마도 응답 변수 bin.frail 숫자가 아닙니다. 예를 들어 문자 (예 : "Y", "N")를 사용하여 코딩 할 수 있습니다. 또는 요인으로 저장되고있는 번호로. is.numeric(whas$bin.frail)을 사용하여 확인할 수 있습니다.

부수적으로, roc()으로 전화 할 때 testing$bin.frail은 테스트 데이터에서 나온 반면 mod1pred은 교육 데이터에서 생성 된 것 같습니다. mod1pred을 만들 때 predict으로 전화하면 newdata = testing을 추가하여이를 수정할 수 있습니다.