Caret preProcess = "medianImpute", но ошибка пропущенных значений - PullRequest
0 голосов
/ 10 мая 2018

Я подгоняю модель, используя каретку, и у меня есть некоторые недостающие данные. Я вспоминаю один раз перед передачей аргумента для обучения "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, мне показалось, что я советую карете использовать среднее значение для любых пропущенных значений. Значит, эта ошибка была неожиданной?

1 Ответ

0 голосов
/ 10 мая 2018

Код предварительной обработки предназначен только для работы, когда x представляет собой простую матрицу или фрейм данных.Обычно не работает при использовании поезда с интерфейсом формулы.

Код ниже работает.Или сначала выполните preProces, predict, а затем train (2-я часть кода).

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
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...