当我使用 preProcess = "medianImpute" 时,插入符号会出现缺失值错误?

Caret gives a missing values error when I use preProcess = "medianImpute"?

最近完成了 Datacamp 的课程 "Machine Learning toolbox" 我想应用我学到的东西:插入符号可以使用参数输入缺失值 preProcess = "medianImpute"

如果我 运行 table(complete.cases(df)) 我得到:

FALSE  TRUE 
24429  6042

所以我需要对缺失值做一些处理。 video 让它看起来如此简单!

mod.lm.medians <- train(target ~., 
                data = train, 
                trControl = train_control,
                method = "lm",
                preProcess = "medianImpute")

给出:

Error in na.fail.default(list(target = c(5850000L, 6000000L, 5700000L, : missing values in object

我找到了另一个 SO 答案 ,它告诉我尝试 na.action=na.exclude 它让我的模型 运行 但仅限于完整的案例,这不是我想要的。

我对caret预处理参数的理解有误吗?我预计缺失值将替换为 df 中每个观察的特征的中值。相反,我收到了这个错误。

我遇到了完全相同的问题。我参加了名为 "Machine Learning Toolbox" 的数据营课程,它在他们的控制台上运行,但在我的控制台上不起作用。

我认为问题在于使用 preProcess 参数的公式。尝试先打破预处理然后训练...

# first preprocess
preproc <- preProcess(train, method = "medianImpute")
trainPreProc<- predict(preproc,train)

mod.lm.medians <- train(target ~., 
                data = train, 
                trControl = train_control,
                method = "lm",
                preProcess = "medianImpute")