我使用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文档,上面写着
"booster default= gbtree
使用哪种助推器。可以是gbtree、gblinear或dart;gbtree和dart使用基于树的模型,而gblinear使用线性函数。
所以,我不知道为什么会发生这个错误,也不知道如何修复它。
发布于 2021-01-10 04:45:10
正如scikit-learn documentation中所解释的,不同的参数值需要以列表的形式传递给GridSearchCV,这意味着booster、objective和eval_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']
}https://stackoverflow.com/questions/65646001
复制相似问题