建模时如何使用R ^ 2作为评估指标?

时间:2018-08-18 01:04:27

标签: python scikit-learn xgboost evaluation grid-search

我正在使用Python在25个要素列数据集和SKlearn的GridSearchCV上训练XGBoost回归参数,以进行参数调整。 GridSearchCV允许您使用“得分”参数选择您的得分手,并且grid = GridSearchCV(mdl, param_grid=params, verbose=1, cv=kfold, n_jobs=-1, error_score='raise',scoring='r2')` 是有效的选项。

r2

但是,当我希望在grid.fit()函数中使用r2作为我的'eval_metric'时,我没有一个很好的方法来使用grid.fit(X_train, y_train, eval_set=[(X_test, y_test)], eval_metric='rmse', early_stopping_rounds=150)

r2_score

我尝试使用内置的sklearns r2 score方法,但是存在一些问题。首先,给定y_testy_pred集的对比,计算出y_pred。为了设置grid.fit(X_train, y_train, eval_set=[(X_test, y_test)], eval_metric=r2_score(y_test, mdl.predict(X_test)), early_stopping_rounds=150) ,我们需要拟合模型。这样您就可以看到我遇到了循环问题。

我已经尝试了一些方法来解决此问题。首先是训练模型并在eval_metric变量中进行预测,如下所示:

xgboost.core.XGBoostError: need to call fit beforehand

但是给我以下错误: r2_score

有道理。

是否可以通过某种方式获取GridSearchCV正在使用的当前参数,创建并存储预测,然后将{{1}}用作eval_metric?

我的想法是这样。 r2分数是标准评估指标,范围为0到1(1为完美拟合)。这是一个度量标准,如果有一种标准化的优化方法,那么在几乎所有机器学习中都将具有非常广泛的意义。

1 个答案:

答案 0 :(得分:0)

据我了解,您正在寻找一种使用XGBoost进行建模时获得r2得分的方法。以下代码将为您提供r2得分作为输出,

xg = xgb.XGBRegressor()
best_xgb = GridSearchCV(
    xg, param_grid=params, cv=10, verbose=0, n_jobs=-1)

scores = cross_val_score(best_xgb, X, y, scoring='r2', cv=kfold) 

有关Scikit-learn documentation函数的更多详细信息,请参考cross_val_score

希望这会有所帮助!