caretEnsemble завершается ошибкой, когда na.action = na.pass включен - PullRequest
0 голосов
/ 01 марта 2019

Я хочу создать модель ансамбля, используя функцию 'caretList' в пакете R 'caretEnsemble'

Когда я включаю код na.action = na.pass в свой код ансамбля, я получаю ошибку

"Error in as.vector(x, "character") : 
  cannot coerce type 'closure' to vector of type 'character'"

Насколько я понимаю, эта ошибка возникает, когда вы пытаетесь использовать функцию R в качестве объекта.Но мой код кажется правильным, и я использовал тот же код для успешного обучения отдельных моделей в пакете R "caret"

Если я исключаю na.action = na.pass, я получаю ошибку

"Error in na.fail.default(list(y = c(2L, 2L, 2L, 2L, 2L, 1L, 1L, 1L, 1L,: missing values in object"

Если я запускаю модель в наборе данных, где я исключил все неполные строки (где у любого наблюдения есть na), она запускается.Мой набор данных содержит 19 (все числовые) переменные предикторов, 30905 строк (наблюдений) с несколькими значениями na (некоторые переменные до 18 000 na).Поэтому я не хочу моделировать только полные строки.

Код моей модели выглядит следующим образом:

set.seed(1269)
    mycontrol<- trainControl(
      method="repeatedcv", number = 5, repeats = 5,
      savePredictions = "final",
      classProbs=TRUE,
      index = createResample(dat$y,25),
      summaryFunction=twoClassSummary
    )

model_list <- caretList(
  y~., data=dat,
  trControl=mycontrol,
  na.action = na.pass,
  methodList=c("ranger","gbm")
  )

Я проверил структуру данных.Переменная-предиктор - это фактор двух классов, а переменные ответа - числовые или целые.Я также использовал эти данные для успешного обучения независимых моделей в карете, поэтому сомневаюсь, что это проблема с данными.

У кого-нибудь есть возможное решение для меня?Спасибо.

Редактировать: я использовал функцию "knnImputation" в пакете R "DMwR" для вменения значений NA перед моделированием, вместо того, чтобы включить это в функцию / фазу "предварительной обработки".Сейчас моя модель работает.Но мне все еще интересно узнать, почему у меня были эти ошибки.

...