Конвейер для RandomOversampler, RandomForestClassifier & GridSearchCV

Я работаю над проблемой текстовой бинарной классификации. Так как классы сильно несбалансированы, я должен использовать такие методы выборки, как RandomOversampler(). Тогда для классификации я бы использовал RandomForestClassifier (), параметры которого необходимо настроить с помощью GridSearchCV(). Я пытаюсь создать конвейер, чтобы сделать это по порядку, но пока не получилось. Выдает "недопустимые параметры".

param_grid = {
             'n_estimators': [5, 10, 15, 20],
             'max_depth': [2, 5, 7, 9]
         }
grid_pipe = make_pipeline(RandomOverSampler(),RandomForestClassifier())
grid_searcher = GridSearchCV(grid_pipe,param_grid,cv=10)
grid_searcher.fit(tfidf_train[predictors],tfidf_train[target])

1 ответ

Решение

Параметры, которые вы определили в params для RandomForestClassifier, но в gridSearchCV вы не передаете RandomForestClassifier объект.

Вы передаете объект конвейера, для которого вам нужно переименовать параметры, чтобы получить доступ к внутреннему объекту RandomForestClassifier.

Измените их на:

param_grid = {
             'randomforestclassifier__n_estimators': [5, 10, 15, 20],
             'randomforestclassifier__max_depth': [2, 5, 7, 9]
             }

И это будет работать.

Спасибо за A2A. В идеале параметры определяются следующим образом:

  1. Создайте конвейер для трансформаторов, которые будут применяться к данным

pipeline = make_pipeline([('variable initialization 1',transformers1()),('variable initialization 2',transformers2()),]

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

eg:pipeline = make_pipeline([('random_over_sampler',RandomOverSampler()),('RandomForestClassifier', RandomForestClassifier()),]

  1. Создайте сетку параметров
param_grid = {'transformations/algorithm'__'parameter_in_transformations/algorithm':[parameters]}

eg: param_grid = {RandomOverSampler__sampling_strategy:['auto']}
Другие вопросы по тегам