【发布时间】:2018-07-17 02:35:02
【问题描述】:
我正在使用 sklearn 和 xgboost 在 python (v3.6) 中建立回归模型。 我想用 early_stopping_rounds 计算 sklearn.cross_val_score。以下代码返回错误:
xgb_model = xgb.XGBRegressor(n_estimators=600,
learning_rate=0.06)
xgb_cv = cross_val_score(xgb_model, train_x, train_y,
cv=5, scoring='neg_mean_absolute_error',
fit_params={'early_stopping_rounds':3})
IndexError: list index out of range
另外,如果我尝试将参数传递为“xgbregressor__early_stopping_rounds”(在一些相关主题中在线找到),则会显示以下错误:
TypeError: fit() got an unexpected keyword argument
'xgbregressor__early_stopping_rounds'
如果我在没有“fit_params”的情况下运行相同的模型,一切正常。 使用 cross_val_score 时有什么办法可以避免这个错误?
【问题讨论】:
-
我认为您可以在此 stackoverflow 响应中找到解决方案:stackoverflow.com/a/43014158/6413835
-
你是对的,谢谢!
-
xgboost 有自己的交叉验证功能。
xgboost.cv。链接:xgboost.readthedocs.io/en/latest/python/python_api.html。有没有理由不使用它? -
最初,我在这篇帖子https://jessesw.com/XG-Boost/ 之后使用
xgboost.cv尝试了它,但后来又切换回了sklearn 框架。我只是觉得更舒服。您是否看到使用xgboost.cv的任何实际优势? -
只是它更兼容。
标签: python scikit-learn cross-validation xgboost