首页 > 解决方案 > gbm 无法识别调整参数网格

问题描述

剧本:

library(caret)
library(gbm)

formula <- price ~ carat + depth + table + x + y + z

mtryGrid <- expand.grid(interaction.depth = seq(1, 7, by = 2),
                    n.trees = seq(100, 1000, by = 50),
                    n.minobsinnode = 10,
                    verbose = FALSE,
                    shrinkage = c(0.01, 0.1))

set.seed(100)
gbm_model <- train(formula, 
               data = diamonds,
               method = "gbm",
               tuneGrid = mtryGrid,
               trControl = trainControl(method = "cv"))

给出错误:

错误:调整参数网格应该有列 n.trees、interaction.depth、shrinkage、n.minobsinnode

虽然 mtryGrid 似乎有所有四个必需的列

我正在使用 R3.5.1,插入符号 6.0-80,gbm 2.1.3

标签: rr-caretgbm

解决方案


所以你不应该verbose=FALSEexpand.grid. 该错误清楚地表明它只能在expand.grid. 删除verbose=FALSE给了我方程的结果。

我希望这有帮助

所以以下适用于我的系统。抑制火车功能中的打印使用verbose=FALSE

formula <- price ~ carat + depth + table + x + y + z

mtryGrid <- expand.grid(interaction.depth = seq(1, 7, by = 2),
                        n.trees = seq(100, 1000, by = 50),
                        n.minobsinnode = 10,
                        shrinkage = c(0.01, 0.1))


expand.grid(n.trees=c(10,20,60),shrinkage=c(0.05,0.1,0.5),n.minobsinnode = c(3,5),interaction.depth=c(3,5))

set.seed(100)
gbm_model <- train(formula, 
               data = diamonds,
               method = "gbm",
               tuneGrid = mtryGrid,
               trControl = trainControl(method = "cv"), verbose=FALSE)

推荐阅读