我刚开始使用R,并尝试构建一棵决策树。我已经使用了party
包的ctree
和rpart
包的rpart。
但是,由于我需要对模型进行交叉验证,因此我开始使用caret
包,因为我可以通过使用函数`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
有一些缺失值,因此该函数无法工作。我不明白为什么会出现这种情况,因为我正在尝试构建一棵树。当我使用其他包时,这个问题并不会发生。这是错误信息:
Error in na.fail.default(list(TARGET = c(3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, :
missing values in object
我不想使用na.action=pass
,因为我真的不想丢弃那些观测值。
我做错了什么吗?为什么会发生这种情况?你有什么建议吗?
na.action = na.pass
不会丢弃 NA 值,而是将其传递下去,这意味着如果您使用的predict
函数不支持 NA 值,则会失败。na.action = na.omit
将会丢弃这些观测值。 - Janna Maas