我使用插入符号拟合模型,我有一些缺失的数据。我记得一次在传递参数之前训练“preProcess =”medianImpute“然而我收到了一个意想不到的错误:
library(caret)
x <- mtcars
x[1:5, "cyl"] <- c(NA, NA, NA, NA, NA)
mod.mt <- train(
mpg ~.,
method = "rpart", # decision tree
tuneLength = 3,
preProcess = "medianImpute",
data = x)
给出:
Error in na.fail.default(list(mpg = c(21, 21, 22.8, 21.4, 18.7, 18.1, :
missing values in object
因为我正在使用preProcess,我以为我告诉我们使用中位数估算任何缺失值。所以这个错误出乎意料吗?
答案 0 :(得分:4)
预处理代码仅在x是简单矩阵或数据帧时才有效。使用具有公式界面的火车时基本不起作用。
以下代码有效。或者首先preProces
,predict
然后train
(代码的第二部分)。
mod.mt <- train(
x = x[,2:10],
y = x$mpg,
method = "rpart", # decision tree
tuneLength = 3,
preProcess = "medianImpute"
)
# first impute / predict
d <- preProcess(x, "medianImpute")
x1 <- predict(d, x)
mod.mt <- train(
mpg ~.,
data = x1,
method = "rpart", # decision tree
tuneLength = 3
)