Конвейер для 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. В идеале параметры определяются следующим образом:
- Создайте конвейер для трансформаторов, которые будут применяться к данным
pipeline = make_pipeline([('variable initialization 1',transformers1()),('variable initialization 2',transformers2()),]
Примечание: не забудьте заканчивать конвейер "," перед закрытием квадратных скобок.
eg:pipeline = make_pipeline([('random_over_sampler',RandomOverSampler()),('RandomForestClassifier', RandomForestClassifier()),]
- Создайте сетку параметров
param_grid = {'transformations/algorithm'__'parameter_in_transformations/algorithm':[parameters]} eg: param_grid = {RandomOverSampler__sampling_strategy:['auto']}