随机森林:na.fail.default 出错:对象中缺少值

6

我尝试使用交叉验证训练随机森林,并使用 caret 包来训练随机森林:

### variable return_customer = binary variable
idx.train <- createDataPartition(y = known$return_customer, p = 0.8, list = FALSE)
train <- known[idx.train, ]
test <- known[-idx.train, ]
k <- 10
set.seed(123)
model.control <- trainControl(method = "cv", number = k, classProbs = TRUE, summaryFunction = twoClassSummary,  allowParallel = TRUE)
rf.parms <- expand.grid(mtry = 1:10)
rf.caret <- train(return_customer~., data = train, method = "rf", ntree = 500, tuneGrid = rf.parms, metric = "ROC", trControl = model.control)

运行train函数时,我得到了这个错误代码,但是在return_customer中没有缺失值:

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

我想了解为什么该函数在数据中读取丢失的值以及如何解决此问题。我知道论坛中有类似的问题,但我无法修复我的代码。谢谢!

1
你看过这个问题了吗? - lrnzcig
是的,但对我来说没有成功。 - BADS_2016
你曾经能够找出问题所在吗? - Eduardo
1个回答

2

您的预测变量中可能存在缺失值。

尝试使用以下代码删除空值行:

row.has.na <- apply(train, 1, function(x){any(is.na(x))})
predictors_no_NA <- train[!row.has.na, ]

希望这对你有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接