Python 如果在管道上使用GridsearchCV,如何在Xgboost中使用model.evals_result()?

Python 如果在管道上使用GridsearchCV,如何在Xgboost中使用model.evals_result()?,python,scikit-learn,xgboost,gridsearchcv,Python,Scikit Learn,Xgboost,Gridsearchcv,我正在使用XGBoost回归器,如果我在管道上使用GridsearchCV,我有一个关于如何使用model.evals_result()的问题,它不仅包括模型: # Define pipeline with feature-selection pipe_xgb = Pipeline([("selector", SelectKBest(f_regression)), ("xgb_reg", xgboost.XGBR

我正在使用XGBoost回归器,如果我在管道上使用GridsearchCV,我有一个关于如何使用model.evals_result()的问题,它不仅包括模型:

# Define pipeline with feature-selection
pipe_xgb = Pipeline([("selector", SelectKBest(f_regression)),
                      ("xgb_reg", xgboost.XGBRegressor(objective ="reg:squarederror", eval_metric="rmse", 
                                  early_stopping_rounds=10, random_state=42))])
# grid search on a set search space
xgb_cv = GridSearchCV(pipe_xgb, search_space_xgb, cv=10, verbose=0)
xgb_cv = xgb_cv.fit(X_train, y_train)

# get best pipeline as well as model
best_xgb = xgb_cv.best_estimator_
best_model = xgb_cv.best_estimator_[1]

best_model.evals_result()
然而,这给了我

AttributeError: 'XGBRegressor' object has no attribute 'evals_result_'
如果我没有使用管道,而只是对模型参数进行网格搜索,那么

best_xgb.evals_result()


会有用的。有什么想法吗?

我想只有当你将
eval\u集
传递给
fit
时,
evals\u结果才会被填充。您应该能够使用
GridSearchCV.fit
中的kwargs
fit_参数执行此操作?(这也是早期停车真正意义重大的必要条件。)