У меня есть несколько моделей прогнозирования, которые созданы с использованием одного и того же trainControl
.Эти модели должны быть созданы заранее (т.е. я не могу использовать caretList
для одновременной тренировки нескольких моделей).
Ниже приведен мой минимальный пример.Когда я вручную объединяю несколько (уже созданных) моделей и передаю их caretStack
,
library("kernlab")
library("rpart")
library("caret")
library("caretEnsemble")
trainingControl <- trainControl(method='cv', number=10, savePredictions = "final", classProbs=TRUE)
data(spam)
ds <- spam
tr <- ds[sample(nrow(ds),3221),]
te <- ds[!(rownames(ds) %in% rownames(tr)),]
model <- train(tr[,-58], tr$type, 'svmRadial', trControl = trainingControl)
model2 <- train(tr[,-58], tr$type, 'rpart', trControl = trainingControl)
multimodel <- list(svm = model, nb = model2)
class(multimodel) <- "caretList"
stack <- caretStack(multimodel, method = "rf", metric = "ROC", trControl = trainingControl)
, библиотека выдает ошибку:
Component models do not have the same re-sampling strategies
.
Почему, поскольку я использую ту же стратегию для генерации базовых моделей?
Я нашел «приведение» к классу caretList в обсуждении github zachmayer/caretEnsemble/issues/104
.