当我使用preProcess =“medianImpute”时,Caret会出现缺失值错误?

时间:2017-04-30 02:38:53

标签: r na r-caret data-science

最近完成了Datacamp的课程“机器学习工具箱”我想应用我学到的东西:插入符可以使用参数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")

给出:

  

na.fail.default出错(list(target = c(5850000L,6000000L,   5700000L,:对象中缺少值

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

我对插入符号的预处理参数的理解是否不正确?我预计缺失的值将被替换为df中每个观察的特征的中位数。相反,我得到了这个错误。

2 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题。我参加了名为“机器学习工具箱”的数据广告课程,它正在他们的控制台上工作,但它不适用于我的。

答案 1 :(得分:0)

我相信问题在于使用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")