无论内容如何,将 fit_params 传递到包含 XGBRegressor 的管道都会返回错误
训练数据集已经过热编码,并被拆分以用于管道
train_X, val_X, train_y, val_y = train_test_split(final_train, y, random_state = 0)
Run Code Online (Sandbox Code Playgroud)
创建一个 Imputer -> XGBRegressor 管道。设置 XGBRegressor 的参数和拟合参数
pipe = Pipeline(steps=[("Imputer", Imputer()),
("XGB", XGBRegressor())])
xgb_hyperparams = {'XGB__n_estimators': [1000, 2000, 3000],
'XGB__learning_rate': [0.01, 0.03, 0.05, 0.07],
'XGB__max_depth': [3, 4, 5]}
fit_parameters = {'XGB__early_stopping_rounds': 5,
'XGB__eval_metric': 'mae',
'XGB__eval_set': [(val_X, val_y)],
'XGB__verbose': False}
grid_search = GridSearchCV(pipe,
xgb_hyperparams,
#fit_params=fit_parameters,
scoring='neg_mean_squared_error',
cv=5,
n_jobs=1,
verbose=3)
grid_search.fit(train_X, train_y, fit_params=fit_parameters)
Run Code Online (Sandbox Code Playgroud)
这会产生以下输出:
Fitting 5 folds for each of 36 candidates, totalling 180 fits
[CV] …Run Code Online (Sandbox Code Playgroud)