小编Mit*_*ffy的帖子

GridSearchCV 在管道中将 fit_params 传递给 XGBRegressor 会产生“ValueError:需要超过 1 个值才能解包”

无论内容如何,​​将 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)

python pipeline scikit-learn grid-search xgboost

2
推荐指数
1
解决办法
4653
查看次数

标签 统计

grid-search ×1

pipeline ×1

python ×1

scikit-learn ×1

xgboost ×1