-3

我正在研究文本二进制分类问题。由于这些类高度不平衡,我必须采用 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])
4

2 回答 2

4

您在 RandomForestClassifier 中定义的参数params,但在 gridSearchCV 中,您没有传递RandomForestClassifier对象。

您正在传递一个管道对象,您必须为此重命名参数以访问内部 RandomForestClassifier 对象。

将它们更改为:

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

它会起作用。

于 2018-01-29T14:56:23.193 回答
1

感谢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']}
于 2020-01-28T14:43:02.647 回答