2017-04-27 13 views
1

저는 R을 사용하여 새로운 의사 결정 트리를 작성하려고합니다. 나는 이미 ctree에 패키지 파티를 사용했고 rpart에는 rpart를 사용했다. 그러나 모델에 대해 교차 유효성 검사를 수행해야하므로, train() 함수와 원하는 메서드를 사용하여 캐럿 패키지를 사용하기 시작합니다. train() 함수에 누락 된 값 오류 트리에 대한 캐럿

library(caret) 
cvCtrl <- trainControl(method = "repeatedcv", repeats = 2, 
        classProbs = TRUE) 

ctree.installed<- train(TARGET ~ OPENING_BALANCE+ MONTHS_SINCE_EXPEDITION+ 
        RS_DESC+SAP_STATUS+ ACTIVATION_STATUS+ ROTUL_STATUS+ 
        SIM_STATUS+ RATE_PLAN_SEGMENT_NORM, 
        data=trainSet, 
        method = "ctree", 
        trControl = cvCtrl) 

는하지만, 내 변수 "OPENING_BALANCE"와 "MONTHS_SINCE_EXPEDITION는"일부 누락 된 값을 가지고 있고 함수는 그것 때문에 작동하지 않습니다. 나는 왜 내가 나무를 만들려고 노력하고 있는지 이해하지 못한다. 다른 패키지를 사용할 때이 문제가 발생하지 않습니다. 내가 정말 그 관찰을 버리고 싶지 않기 때문에 통과 = na.action을 사용하지 않았다

Error in na.fail.default(list(TARGET = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, : 
missing values in object 

:

는 오류입니다.

내가 잘못 했나요? 왜 이런 일이 일어나는 걸까요? 이것에 대한 제안이 있습니까?

내가 몇 가지 누락 된 값을 가지고 mlbench 패키지의 데이터 세트 PimaIndiansDiabetes2을 고려 시작 당신의 도움이

+0

를' na.action = na.pass'는 na를 버리지 않습니다. 즉, NA를 지원하지 않는'predict' 함수를 사용하면 그것을 전달합니다. '실패 할 것이다. 'na.action = na.omit' _ 그 관측을 버려야합니다. –

+0

찾았습니까? 도움이 될 수도 있습니다. https://stats.stackexchange.com/questions/144922/r-caret-and-nas –

+0

답변 해 주셔서 감사합니다. 내가 찾은 문제는 예측 함수를 사용할 때 결과가 테스트 세트에 준 것보다 훨씬 적은 관찰을 반환한다는 것입니다. 테스트 세트에 30000 개의 관측치가 있다고 가정하고 10000 개의 입력 변수에 누락 값이 있으므로 20000에 대한 예측 만 수신합니다. –

답변

1

주셔서 감사합니다.

data(PimaIndiansDiabetes2, package = "mlbench") 
head(PimaIndiansDiabetes2) 

    pregnant glucose pressure triceps insulin mass pedigree age diabetes 
1  6  148  72  35  NA 33.6 0.627 50  pos 
2  1  85  66  29  NA 26.6 0.351 31  neg 
3  8  183  64  NA  NA 23.3 0.672 32  pos 
4  1  89  66  23  94 28.1 0.167 21  neg 
5  0  137  40  35  168 43.1 2.288 33  pos 
6  5  116  74  NA  NA 25.6 0.201 30  neg 

train 나는 na.passna.action 설정 (변경되지 않은 데이터 세트를 반환 이어진다) 다음 ctree에서 maxsurrogate 파라미터 세트 :

library(caret) 
cvCtrl <- trainControl(method="repeatedcv", repeats = 2, classProbs = TRUE) 
set.seed(1234) 
ctree1 <- train(diabetes ~ ., data=PimaIndiansDiabetes2, 
        method = "ctree", 
        na.action = na.pass, 
        trControl = cvCtrl, 
        controls=ctree_control(maxsurrogate=2)) 

결과이다

print(ctree1) 
Conditional Inference Tree 

392 samples 
    8 predictor 
    2 classes: 'neg', 'pos' 

No pre-processing 
Resampling: Cross-Validated (10 fold, repeated 2 times) 
Summary of sample sizes: 691, 692, 691, 691, 691, 691, ... 
Resampling results across tuning parameters: 

    mincriterion Accuracy Kappa  
    0.01   0.7349111 0.4044195 
    0.50   0.7485731 0.4412557 
    0.99   0.7323906 0.3921662 

Accuracy was used to select the optimal model using the largest value. 
The final value used for the model was mincriterion = 0.5. 
+0

안녕하세요, 답변 주셔서 감사합니다 :) 왜 maxsurrogate 매개 변수를 설정 했습니까? –

+1

제 목표는'train '내에'ctree' 매개 변수를 전달하는 방법을 보여주기위한 것이 었습니다. 또한 'maxsurrogate'는 누락 된 값이있을 때 중요한 매개 변수입니다 (양수 값으로 설정해야 함). –

+0

왜? 미안 해요 초보자 xD –