I have tried various ways to pass param grid to gridsearchcv and after trying everything else I am literally trying to pass param grid as follows:
self.model = GridSearchCV(self.model, {'n_estimators':[100], 'learning_rate':[0.1], 'gamma':[0], 'subsample':[1.0], 'colsample_bytree':[1.0], 'max_depth':[10], 'reg_lambda':[1.0]}, n_jobs=1)
but still it gives the following error.
Traceback (most recent call last):
File "train.py", line 93, in <module>
trainer.train_station_models()
File "train.py", line 72, in train_station_models
val_dataset, val_labels)
File "train.py", line 40, in train
val_dataset, val_labels)
File "/models.py", line 193, in train
self.model.fit(self.train_data, self.train_labels)
File "/anaconda3/envs/tf/lib/python3.7/site-packages/sklearn/utils/validation.py", line 72, in inner_f
return f(**kwargs)
File "/anaconda3/envs/tf/lib/python3.7/site-packages/sklearn/model_selection/_search.py", line 736, in fit
self._run_search(evaluate_candidates)
File "/anaconda3/envs/tf/lib/python3.7/site-packages/sklearn/model_selection/_search.py", line 1188, in _run_search
evaluate_candidates(ParameterGrid(self.param_grid))
File "/anaconda3/envs/tf/lib/python3.7/site-packages/sklearn/model_selection/_search.py", line 715, in evaluate_candidates
cv.split(X, y, groups)))
File "/anaconda3/envs/tf/lib/python3.7/site-packages/joblib/parallel.py", line 1041, in __call__
if self.dispatch_one_batch(iterator):
File "/anaconda3/envs/tf/lib/python3.7/site-packages/joblib/parallel.py", line 859, in dispatch_one_batch
self._dispatch(tasks)
File "/anaconda3/envs/tf/lib/python3.7/site-packages/joblib/parallel.py", line 777, in _dispatch
job = self._backend.apply_async(batch, callback=cb)
File "/anaconda3/envs/tf/lib/python3.7/site-packages/joblib/_parallel_backends.py", line 208, in apply_async
result = ImmediateResult(func)
File "/anaconda3/envs/tf/lib/python3.7/site-packages/joblib/_parallel_backends.py", line 572, in __init__
self.results = batch()
File "/anaconda3/envs/tf/lib/python3.7/site-packages/joblib/parallel.py", line 263, in __call__
for func, args, kwargs in self.items]
File "/anaconda3/envs/tf/lib/python3.7/site-packages/joblib/parallel.py", line 263, in <listcomp>
for func, args, kwargs in self.items]
File "/anaconda3/envs/tf/lib/python3.7/site-packages/sklearn/model_selection/_validation.py", line 520, in _fit_and_score
estimator = estimator.set_params(**cloned_parameters)
File "/anaconda3/envs/tf/lib/python3.7/site-packages/sklearn/base.py", line 252, in set_params
(key, self))
ValueError: Invalid parameter colsample_bytree for estimator GridSearchCV(estimator=XGBRegressor(base_score=None, booster=None,
colsample_bylevel=None,
colsample_bynode=None,
colsample_bytree=None, gamma=None,
gpu_id=None, importance_type='gain',
interaction_constraints=None,
learning_rate=None, max_delta_step=None,
max_depth=None, min_child_weight=None,
missing=nan, monotone_constraints=None,
n_estimators=100, n_jobs=None,
num_parallel_tree=None, random_state=None,
reg_alpha=None, reg_lambda=None,
scale_pos_weight=None, subsample=None,
tree_method=None, validate_parameters=None,
verbosity=None),
n_jobs=1,
param_grid={'colsample_bytree': [1.0], 'gamma': [0],
'learning_rate': [0.1], 'max_depth': [10],
'n_estimators': [100], 'reg_lambda': [1.0],
'subsample': [1.0]}). Check the list of available parameters with `estimator.get_params().keys()`.
I tried removing the gridsearchcv and everything works just fine. I am really not understanding why it is showing this behavior.
I am using the xgboost package with python sklearn API for it.