贝叶斯优化xgboost超参数寻优的代码
时间: 2023-06-22 16:21:56 浏览: 164
下面是使用贝叶斯优化进行XGBoost超参数寻优的Python代码示例:
```python
import xgboost as xgb
from bayes_opt import BayesianOptimization
# 定义目标函数
def xgb_cv(max_depth, eta, subsample, min_child_weight, gamma):
params = {
'eval_metric': 'rmse',
'max_depth': int(max_depth),
'eta': eta,
'subsample': subsample,
'min_child_weight': min_child_weight,
'gamma': gamma,
'seed': 42,
'nthread': -1
}
cv_result = xgb.cv(params, dtrain, num_boost_round=1000, early_stopping_rounds=50, metrics=['rmse'], stratified=False, nfold=5)
return -1.0 * cv_result['test-rmse-mean'].iloc[-1]
# 定义超参数搜索空间
xgbBO = BayesianOptimization(xgb_cv, {'max_depth': (3, 10), 'eta': (0.01, 0.3), 'subsample': (0.5, 0.9), 'min_child_weight': (1, 10), 'gamma': (0, 1)})
# 进行超参数寻优
xgbBO.maximize(n_iter=10, init_points=3, acq='ei')
# 输出最优超参数
print(xgbBO.max['params'])
```
在上面的代码中,先定义了目标函数`xgb_cv`,其输入为超参数,输出为模型的性能指标(这里使用均方根误差RMSE)。然后定义了超参数搜索空间,并使用`BayesianOptimization`类进行超参数寻优。最后输出最优超参数。
需要注意的是,这里的超参数搜索空间大小和采样策略可以根据实际问题进行调整。