GridSearchCV:XGBRegressionor中的参数错误

2024-06-16 10:04:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用GridSearchCV查找XGB模型中的最佳参数,下面是我的代码

# Xgboost
grid_xgb = {
    'booster': 'gbtree',
    'objective': 'binary:logistic',
    'subsample': [0.6,0.7,0.8,0.9],
    'colsample_bytree': [0.6,0.7,0.8,0.9],
    'eta': [0.05,0.1,0.2,0.3],
    'max_depth': [3,5,7],
    'seed': [2021,2022],
    'eval_metric': 'logloss'
}

model_xgb = xgb.XGBRegressor()
search_xgb = GridSearchCV(estimator = model_xgb, 
                         param_grid = grid_xgb, 
                         cv = 5,
                         n_jobs = -1,
                         verbose = 2)

但我得到一个错误信息:

 Parameter values for parameter (booster) need to be a sequence(but not a string) or np.ndarray

我检查了XGB文档,它说

“助推器[默认值=gbtree]

要使用的助推器。可以是gbtree、gblinear或dart;gbtree和dart使用基于树的模型,而gblinear使用线性函数。”

所以,我不知道为什么会发生错误,也不知道该怎么解决


Tags: 代码模型参数modelgridboosterdartobjective
1条回答
网友
1楼 · 发布于 2024-06-16 10:04:32

scikit-learn documentation中所述,不同的参数值需要作为列表传递给GridSearchCV,这意味着boosterobjectiveeval_metric也需要用方括号括起来:

grid_xgb = {
    'booster': ['gbtree'],
    'objective': ['binary:logistic'],
    'subsample': [0.6,0.7,0.8,0.9],
    'colsample_bytree': [0.6,0.7,0.8,0.9],
    'eta': [0.05,0.1,0.2,0.3],
    'max_depth': [3,5,7],
    'seed': [2021,2022],
    'eval_metric': ['logloss']
}

相关问题 更多 >