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