caretEnsemble错误:乐趣中的错误(X[[i]],…):{…不是真的

caretEnsemble错误:乐趣中的错误(X[[i]],…):{…不是真的,r,regression,r-caret,ensemble-learning,R,Regression,R Caret,Ensemble Learning,我一直试图将两个回归模型(glmnet和bagEarth)的预测叠加在一起,但我得到了“乐趣中的错误(X[[I]],…):{…不是真的”消息。根据我所读到的,我已经看到这个问题源于重新采样索引,但由于我正在一起训练模型,我看不出如何解决这个问题。我已经能够使用随机数进行复制: library(caret) library(caretEnsemble) rm(list=ls()) training <- as.data.frame(cbind(runif(24,1,100) ,runif(

我一直试图将两个回归模型(glmnet和bagEarth)的预测叠加在一起,但我得到了“乐趣中的错误(X[[I]],…):{…不是真的”消息。根据我所读到的,我已经看到这个问题源于重新采样索引,但由于我正在一起训练模型,我看不出如何解决这个问题。我已经能够使用随机数进行复制:

library(caret)
library(caretEnsemble)
rm(list=ls())

training <- as.data.frame(cbind(runif(24,1,100)
,runif(24,1,100)
,runif(24,1,100)
,runif(24,1,100)
,runif(24,1,100)
,runif(24,1,100)))

colnames(training) <- c("y", "x1", "x2", "x3", "x4", "x5")

set.seed(7)
ctrl <- trainControl(method = "cv", number = 3, returnResamp = "all", classProbs = FALSE, index = createMultiFolds(training$y, k = 3, times = 1))
model_list <- caretList(y~., data = training, trControl = ctrl, metric = "RMSE", methodList = c("glmnet", "bagEarth"))
train_ctrl <- trainControl(method = "cv", number = 3, classProbs = FALSE, savePredictions = TRUE, index = createMultiFolds(training$y, k = 3, times = 1))
glm_ensemble <- caretStack(model_list, method = "glm", metric = "RMSE", trControl = train_ctrl)
库(插入符号)
图书馆(caretEnsemble)
rm(list=ls())

培训一点调试,错误来自一个名为
bestPreds
的函数。这是一个未导出的函数,在模型列表中查找保存的预测(全部或最终)在控件对象中。您没有在控件对象中设置此项。如果添加此项,一切都会正常运行。我承认,在此处显示错误消息会很好,而不仅仅是抛出错误

ctrl <- trainControl(method = "cv", number = 3, returnResamp = "all", 
                     savePredictions = "final",  # needs to be final or all
                     classProbs = FALSE, index = createMultiFolds(training$y, k = 3, times = 1))
ctrl