Я борюсь с функциональностью NA в пакете Rpart. Я получил следующий dataframe (код ниже) заRpart - обработка НД
Outcome VarA VarB
1 1 1 0
2 1 1 1
3 1 NA 1
4 0 0 1
5 0 0 0
6 0 NA 0
Я пытаюсь соответствовать Rpart объект, который делает идеальный прогноз. Логическое правило должно быть то, что он предсказывает, что:
- Если вар = 1, предсказание = 1
- Если вар = 0, предсказание = 0
- Если вар = NA, то используется VarB (Если VarB = 0, предсказание = 0)
Однако я изо всех сил стараюсь найти правильный код для «передачи значений NA» для VarA по дереву правильно. Я пытался работать с usesurrogates
и na.control
, но безрезультатно ... пожалуйста, найдите мне код ниже.
PS. Rpart работает, если Vara будет читать VarA=c(1,1,2,0,0,2)
, но, к сожалению, это не является отличным решением для больших dataframe, что я работаю ....
library(rpart)
Outcome=c(1,1,1,0,0,0)
VarA=c(1,1,NA,0,0,NA)
VarB=c(0,1,1,1,0,0)
dg=as.data.frame(cbind(Outcome, VarA, VarB))
dg
fit=rpart(Outcome ~ VarA + VarB, data=dg, method="class",na.action = na.pass,control=rpart.control(usesurrogate=1, minsplit=1, cp=0.001))
fit
newdata=dg
newpred=predict(fit,newdata=newdata,type = "class")
dh=cbind(dg,newpred)
dh