我正在按照网上的一个超参数调优教程,我正在尝试使用 bayes_opt
但我得到这个错误。
---> best_params = bo.res['max']['max_params']
TypeError: list indices must be integers or slices, not str
这是我的示例代码
from bayes_opt import BayesianOptimization
bo= BayesianOptimization(xgb_evaluate, {'max_depth': (3, 7),
'gamma': (0, 1),
'colsample_bytree': (0.3, 0.9)})
bo.maximize(init_points=3, n_iter=5, acq='ei')
best_params = bo.res['max']['max_params']
很可能我使用的是较新版本的 bayes_opt
和API的变化。为了得到最好的参数,我所要做的只是搜索最大目标值,然后得到params。
params = max(xgb_bo.res, key=lambda x:x['target'])
best_params = params['params']
best_target = params['target']
best_params['max_depth'] = int(best_params['max_depth'])
print(best_target, best_params)