XGBoost贝叶斯参数优化实例
时间: 2024-07-07 08:00:22 浏览: 115
XGBoost是一个高效的梯度提升库,它提供了对超参数进行优化的功能。贝叶斯优化是一种常用的全局优化方法,用于寻找高维空间中的局部最优解。以下是使用Python的skopt库(基于贝叶斯优化)对XGBoost模型的参数进行优化的一个简单实例:
```python
# 导入必要的库
import xgboost as xgb
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from skopt import gp_minimize
from skopt.space import Real, Integer
# 加载数据
boston = load_boston()
X, y = boston.data, boston.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 定义XGBoost的参数空间
param_space = {
'n_estimators': Integer(10, 200), # 树的数量
'max_depth': Integer(1, 16), # 树的最大深度
'learning_rate': Real(0.01, 0.3), # 学习率
'gamma': Real(0, 1), # 分裂阈值
'subsample': Real(0.5, 1), # 子样本比例
'colsample_bytree': Real(0.5, 1) # 每棵树使用的特征列比例
}
def objective(params):
model = xgb.XGBRegressor(**params)
model.fit(X_train, y_train)
score = model.score(X_test, y_test) # 使用R^2分数评估
return -score # skopt优化目标函数通常求最小值,所以我们取负数
# 使用贝叶斯优化寻找最佳参数
best_params = gp_minimize(objective, param_space, n_calls=50, random_state=0)
# 打印最佳参数和对应的得分
print("Best parameters found: ", best_params.x)
print("Best score: ", -best_params.fun)