Ошибка GridSearchCV в param_grid с помощью RandomForestRegressor - PullRequest
0 голосов
/ 01 августа 2020
ValueError: Invalid parameter estimator for estimator RandomForestRegressor().
Check the list of available parameters with `estimator.get_params().keys()`.

Это ошибка, которую я получаю при использовании GridSearchCV в модели RandomForestRegressor. Вот код

%%time 
from sklearn.model_selection import RandomizedSearchCV

rf_grid= {"estimator__n_estimators ": np.arange(10,100,10),
      "estimator__max_depth ": [None,3,5,10],
      "estimator__min_sample_split": np.arange(2,20,2),
      "estimator__min_sample_leaf" : np.arange(1,20,2),
      "estimator__max_features ": [0.5,1,'sqrt','auto'],
      "estimator__max_samples" : [10000]
}
rfr_2=RandomForestRegressor()

rs_model= RandomizedSearchCV(estimator=rfr_2,
                        param_distributions=rf_grid,
                        n_iter=100,
                        cv=5,
                        verbose= True)

rs_model.fit(X_train,Y_train)

Ответы [ 3 ]

0 голосов
/ 01 августа 2020

Во-первых, чтобы увидеть, как вы должны назвать свои параметры в своем словаре, вы можете заранее распечатать их следующим образом:

print(rfr_2.get_params())

После того, как вы напечатали все параметры, теперь вы можете выбрать, какие те, которые вы собираетесь передать в словарь сетки.

Что вам нужно сделать, так это избавиться от "Estimator__", которое вы помещаете перед каждым параметром.

Кроме того, как только вы это сделаете , вы столкнетесь с другой ошибкой. А именно, параметр max_samples может принимать значение от 1 до 232, значение, которое вы установили (10000), слишком велико. Ниже представлен блок кода, который был изменен и должен работать!

rf_grid= {"n_estimators": np.arange(10,100,10),
  "max_depth": [None,3,5,10],
  "min_samples_split": np.arange(2,20,2),
  "min_samples_leaf" : np.arange(1,20,2),
  "max_features": [0.5,1,'sqrt','auto'],
  "max_samples" : [100]
0 голосов
/ 02 августа 2020

Получается, что я должен использовать одинарные кавычки "" вместо двойных "".

 %%time 
 from sklearn.model_selection import RandomizedSearchCV

 rf_grid= {'n_estimators': np.arange(10,100,10),
      'max_depth': [None,3,5,10],
      'min_samples_split': np.arange(2,20,2),
      'min_samples_leaf' : np.arange(1,20,2),
      'max_features': [0.5,1,'sqrt','auto'],
      'max_samples' : [100]
  }

  rs_model= RandomizedSearchCV(rfr,
                        param_distributions=rf_grid,
                        n_iter=100,
                        cv=5,
                        verbose= True)
  rs_model.get_params()
  }
0 голосов
/ 01 августа 2020

Из сообщения об ошибке:

ValueError: Недопустимая оценка параметра для средства оценки RandomForestRegressor (). Проверьте список доступных параметров с помощью estimator.get_params().keys().

, вы увидите, что вы ошибочно указали параметры в rf_grid.

Используйте:

rf_grid= {"n_estimators": np.arange(10,100,10),
      "max_depth": [None,3,5,10],
      "min_samples_split": np.arange(2,20,2),
      "min_samples_leaf" : np.arange(1,20,2),
      "max_features": [0.5,1,'sqrt','auto'],
      "max_samples" : [10000]
}

как предлагается из:

rfr_2.get_params().keys()

dict_keys (['bootstrap', 'ccp_alpha', 'criterion', 'max_depth', 'max_features', 'max_leaf_nodes', 'max_samples' , 'min_impurity_decrease', 'min_impurity_split', 'min_samples_leaf', 'min_samples_split', 'min_weight_fraction_leaf', 'n_estimators', 'n_jobs', 'oob_score', 'warm_state', * * verbose18, * verbose18 1019 *

...