2016-07-29 11 views
0

이진 분류 작업을 예측하기 위해 caret 패키지를 사용하여 임의의 포리스트를 교육했습니다.클래스 확률 대신 예측 클래스를 얻는 방법은 무엇입니까?

library(caret) 
set.seed(78) 
inTrain <- createDataPartition(disambdata$Response, p=3/4, list = FALSE) 
trainSet <- disambdata[inTrain,] 
testSet <- disambdata[-inTrain,] 
ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 10) 
grid_rf <- expand.grid(.mtry = c(3,5,7,9)) 
set.seed(78) 
m_rf <- train(Response ~ ., data=trainSet, 
      method= "rf", metric = "Kappa", trcontrol=ctrl, tuneGrid = grid_rf) 

Response 변수 값 {Valid, Invalid}를 포함한다. 내가 테스트 데이터의 클래스 확률을 얻을 다음 사용 :

pred <- predict.train(m_rf, newdata = testSet, 
        type="prob", models=m_rf$finalModel) 

그러나 내가 혼란 매트릭스을 생성 에 클래스 확률의Valid 또는 Invalid대신 예측 클래스를 얻기에 관심을.

함수에서 이미 인수 type="raw"을 시도했지만 NAs의 목록을 반환합니다.

답변

0

을 제공 할 것입니다 제거합니다. Response ~ .에서 수식을 확장하면이 모든 예언자를 명시 적으로 언급하는 사람에게 Response ~ MaxLikelihood + n1 + n2 + count이 문제를 해결하고 predict.train(m_rf, newdata=testSet)은 예측 된 클래스를 반환합니다.

+0

버그 인 경우, 그것을 캐럿의 github 페이지에보고하십시오. – phiver

+1

@phiver, 예, 패키지 캐럿의 이전 버전 중 하나에 대해서도보고되었으므로보고 할 계획입니다. 내가 가지고있는 버전의 릴리스 노트 (6.0-70)는이 문제가 해결되었다고 언급합니다. 어쨌든 나는 github에 버그를보고 할 것이다. –

3

predict() 함수에서 type = "prob"를 지정하면 구체적으로 확률을 묻습니다. 그냥 & 캐럿 패키지 (caret_6.0-70는) 아직 공식 인터페이스 문제가있는 것 같다 라벨

pred <- predict.train(m_rf, newdata = testSet,models=m_rf$finalModel) 
+0

불행히도 나를 위해 일하지 않는'type = prob'을 제거하면 좋지 않습니다. 'pred '는'NAs'를받습니다. –