在Xgboost中使用GridsearchCV进行参数调优时,可以通过model.evals_result()方法来获取模型在每个迭代轮次上的评估结果。
首先,GridsearchCV会对给定的参数空间进行网格搜索,对每一组参数进行交叉验证,并计算模型在验证集上的性能指标。在每个参数组合上,GridsearchCV会训练一个Xgboost模型,并通过model.evals_result()方法获取模型的评估结果。
model.evals_result()方法返回一个字典,其中包含了模型在训练集和验证集上的性能指标。具体来说,字典的键是评估指标的名称,例如"rmse"表示均方根误差。对应的值是一个列表,列表的每个元素表示模型在每个迭代轮次上的评估结果。
以下是一个示例代码,展示了如何在Xgboost中使用GridsearchCV,并获取模型的评估结果:
from sklearn.model_selection import GridSearchCV
import xgboost as xgb
# 定义参数空间
param_grid = {
'max_depth': [3, 5, 7],
'learning_rate': [0.1, 0.01, 0.001]
}
# 创建Xgboost模型
model = xgb.XGBRegressor()
# 创建GridsearchCV对象
grid_search = GridSearchCV(estimator=model, param_grid=param_grid, cv=3)
# 在训练数据上进行网格搜索
grid_search.fit(X_train, y_train)
# 获取最佳参数组合
best_params = grid_search.best_params_
# 创建使用最佳参数的Xgboost模型
best_model = xgb.XGBRegressor(**best_params)
# 在全量训练数据上训练最佳模型
best_model.fit(X_train, y_train)
# 获取模型在每个迭代轮次上的评估结果
evals_result = best_model.evals_result()
# 打印模型在训练集和验证集上的性能指标
print("Training evaluation results:")
for metric, values in evals_result['train'].items():
print(f"{metric}: {values}")
print("\nValidation evaluation results:")
for metric, values in evals_result['validation'].items():
print(f"{metric}: {values}")
在上述代码中,我们首先定义了参数空间param_grid,然后创建了一个Xgboost模型和GridsearchCV对象。通过调用grid_search.fit()方法,在训练数据上进行网格搜索,找到最佳参数组合。然后,我们使用最佳参数创建了一个新的Xgboost模型best_model,并在全量训练数据上进行训练。
最后,通过调用best_model.evals_result()方法,我们获取了模型在训练集和验证集上的评估结果,并打印出来。
需要注意的是,evals_result返回的是一个字典,其中包含了模型在训练集和验证集上的所有评估指标。你可以根据需要选择性地打印出特定的评估指标。
推荐的腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云