我试图从XGboost模型的结果中绘制MAE和RMSE。首先,我使用gridsearchcv来寻找参数,然后我拟合模型,并在拟合模型时设置eval_metrics以便输出结果:
myModel = GridSearchCV(estimator=XGBRegressor( learning_rate=0.01, n_estimators=500, max_depth=5, min_child_weight=5, gamma=0, subsample=0.8, colsample_bytree=0.8, eval_metric ='mae', reg_alpha=0.05 ), param_grid = param_search, cv = TimeSeriesSplit(n_splits=5),n_jobs=-1 )#拟合模型eval_set = [(X_train, y_train), (X_test, y_test)]eval_metric = ["rmse","mae"]history=myModel.fit(X_train, y_train, eval_metric=eval_metric, eval_set=eval_set)
我得到了正确的拟合结果:
[0] validation_0-rmse:7891 validation_0-mae:7791.42 validation_1-rmse:6465.99 validation_1-mae:6465.52[1] validation_0-rmse:7813.98 validation_0-mae:7714.55 validation_1-rmse:6398.87 validation_1-mae:6398.4
然而,当我试图访问这些值以创建图表时,我遇到了以下错误:
myModel.evals_result()AttributeError: 'GridSearchCV' object has no attribute 'evals_result'
我如何访问这些值呢?
回答:
你可以创建一个结果字典,然后将其传递给fit函数
progress = dict()history=myModel.fit(X_train, y_train, evals_result=progress eval_metric=eval_metric, eval_set=eval_set)print(progress)