利用xgb.cv,以测试集r2_score为目标的调参代码
时间: 2024-02-19 16:57:14 浏览: 76
好的,以下是一个用于调参的 XGBoost 代码示例,目标是测试集的 R2 分数:
```python
import xgboost as xgb
from sklearn.metrics import r2_score
from sklearn.model_selection import GridSearchCV
# 加载数据
X_train, y_train = load_train_data()
X_test, y_test = load_test_data()
# 定义 XGBoost 模型
xgb_model = xgb.XGBRegressor()
# 定义要调整的参数范围
params = {
'max_depth': [3, 5, 7],
'learning_rate': [0.01, 0.1, 0.5],
'n_estimators': [100, 500, 1000]
}
# 使用 GridSearchCV 进行调参
grid_search = GridSearchCV(
estimator=xgb_model,
param_grid=params,
scoring='r2', # 以 R2 分数为评价指标
cv=5 # 5 折交叉验证
)
# 训练模型并查找最佳参数
grid_search.fit(X_train, y_train)
# 输出最佳参数
print("Best parameters found: ", grid_search.best_params_)
# 使用最佳参数重新训练模型并预测测试集
best_xgb_model = xgb.XGBRegressor(**grid_search.best_params_)
best_xgb_model.fit(X_train, y_train)
y_pred = best_xgb_model.predict(X_test)
# 输出测试集 R2 分数
test_r2_score = r2_score(y_test, y_pred)
print("Test R2 score: ", test_r2_score)
```
这个示例代码中使用了 GridSearchCV 进行参数调整,它会遍历所有可能的参数组合,并通过交叉验证计算每种参数组合下的 R2 分数。最后输出最佳参数和测试集的 R2 分数。你可以根据需要修改参数范围和评价指标。
阅读全文