cross_val_score xgboost "early_stopping_rounds" returns "IndexError"
cross_val_score for xgboost with "early_stopping_rounds" returns "IndexError"
我正在使用 sklearn 和 xgboost 在 python (v3.6) 中开发回归模型。
我想用 early_stopping_rounds 计算 sklearn.cross_val_score。以下代码returns出错:
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 时有什么方法可以避免此错误?
根据 lbcommer 的建议,使用 glao 在这里 的回答解决了这个问题 - 谢谢!
为了避免过度拟合,我使用训练数据的单独部分作为验证数据集来评估算法。请参阅下面的代码:
train_x, val_x, train_y, val_y = train_test_split(train_x, train_y, test_size = 0.30, random_state=1)
xgb_model = xgb.XGBRegressor(n_estimators=600, learning_rate=0.06)
fit_params={'early_stopping_rounds': 30,
'eval_metric': 'mae',
'verbose': False,
'eval_set': [[val_x, val_y]]}
xgb_cv = cross_val_score(xgb_model, train_x, train_y,
cv = 5,
scoring = 'neg_mean_absolute_error',
fit_params = fit_params)
我正在使用 sklearn 和 xgboost 在 python (v3.6) 中开发回归模型。 我想用 early_stopping_rounds 计算 sklearn.cross_val_score。以下代码returns出错:
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 时有什么方法可以避免此错误?
根据 lbcommer 的建议,使用 glao 在这里
为了避免过度拟合,我使用训练数据的单独部分作为验证数据集来评估算法。请参阅下面的代码:
train_x, val_x, train_y, val_y = train_test_split(train_x, train_y, test_size = 0.30, random_state=1)
xgb_model = xgb.XGBRegressor(n_estimators=600, learning_rate=0.06)
fit_params={'early_stopping_rounds': 30,
'eval_metric': 'mae',
'verbose': False,
'eval_set': [[val_x, val_y]]}
xgb_cv = cross_val_score(xgb_model, train_x, train_y,
cv = 5,
scoring = 'neg_mean_absolute_error',
fit_params = fit_params)