【发布时间】:2018-05-26 07:46:19
【问题描述】:
我正在使用 h2o 包从具有不同正则化参数(alpha、lambda)的 GLM 模型构建一个集成。当我尝试按照文档构建合奏时:
ensemble <- h2o.stackedEnsemble(x = predictors,
y = response,
training_frame = train,
model_id = "ensemble",
base_models = list(glm_grid@model_ids))
其中glm_grid@model_ids 是来自网格搜索的模型,以确定 GLM 的最佳 alpha 和 lambda 正则化参数。我收到以下错误:
When creating a StackedEnsemble you must specify one or more models; 24 were specified but none of those were found: [list("glm_grid_model_6", glm_grid_model_11, glm_grid_model_7, glm_grid_model_9, glm_grid_model_2, glm_grid_model_21, glm_grid_model_15, glm_grid_model_0"]
你知道问题出在哪里吗?
编辑:我尝试遵循文档并使用与该文档类似的代码:
gbm_grid <- h2o.grid(algorithm = "gbm",
grid_id = "gbm_grid_binomial",
x = x,
y = y,
training_frame = train,
ntrees = 10,
seed = 1,
nfolds = nfolds,
fold_assignment = "Modulo",
keep_cross_validation_predictions = TRUE,
hyper_params = hyper_params,
search_criteria = search_criteria)
# Train a stacked ensemble using the GBM grid
ensemble <- h2o.stackedEnsemble(x = x,
y = y,
training_frame = train,
model_id = "ensemble_gbm_grid_binomial",
base_models = gbm_grid@model_ids)
根据@Erin LeDell,我删除了额外的list(),它现在可以工作了。但是,我最终想做的是使用来自各种模型的网格,例如:
ensemble <- h2o.stackedEnsemble(x = x,
y = y,
training_frame = train,
model_id = "my_ensemble_binomial",
base_models = list(my_gbm, my_rf))
EDIT2:
通过使用解决它:
model_list <- as.list(c(glm_grid_1@model_ids,
glm_grid_2@model_ids))
ensemble <- h2o.stackedEnsemble(x = predictors,
y = response,
training_frame = train,
model_id = "ensemble1231",
base_models = model_list)
【问题讨论】:
-
请贴出用于创建
glm_grid的代码,以及list(glm_grid@model_ids)的结果。此外,您报告的错误消息中的引号 (") 似乎存在问题
标签: r machine-learning glm h2o ensemble-learning