贝叶斯优化xgboost代码详解
时间: 2024-09-14 07:03:38 浏览: 57
贝叶斯优化是一种全局优化算法,常用于机器学习中的模型超参数调优,它通过构建概率模型来指导搜索过程,寻找最优解。XGBoost是一个高效的梯度提升库,但在实际应用中,我们可以结合sklearn里的`BayesianOptimization`来进行调参。
下面是一个简单的例子,展示了如何使用`scikit-optimize`库中的`BayesianOptimizer`配合XGBoost:
```python
# 导入所需的库
from sklearn.model_selection import train_test_split
from xgboost import XGBClassifier
from skopt import BayesSearchCV
# 定义超参数空间
param_space = {
'n_estimators': (50, 1000), # 树的数量
'max_depth': (3, 10), # 深度
'learning_rate': (0.01, 0.3), # 学习率
'gamma': (0, 1) # 分裂节点的最小损失差值
}
# 创建XGBoost分类器实例
model = XGBClassifier()
# 使用Bayesian Optimization进行调优
bayes_opt = BayesSearchCV(
model,
param_space,
n_iter=20, # 迭代次数
cv=5, # 交叉验证折叠数
scoring='accuracy', # 评估指标
random_state=42
)
# 划分数据集
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
# 开始优化
bayes_opt.fit(X_train, y_train)
# 获取最佳超参数及其对应性能
best_params = bayes_opt.best_params_
best_score = bayes_opt.best_score_
print(f"Best parameters: {best_params}")
print(f"Best validation score: {best_score}")
阅读全文