尝试使用管道和网格搜索 运行 随机森林分类器时出错
Error when trying to run RandomForestClassifier with Pipieline and GridSearch
我正在尝试 运行 使用 Pipeline、GridSerach 和 CV 的 RandomForest 分类器
拟合数据时出现错误。我不确定如何修复它。
我在解决方案 中发现了一个类似的问题,但对我没有用
将不胜感激。
我的代码是:
column_trans = make_column_transformer((OneHotEncoder(), ['CategoricalData']),
remainder='passthrough')
RF = RandomForestClassifier()
pipe = make_pipeline(column_trans, RF)
# Set grid search params
grid_params = [{'randomforestclassifier_criterion': ['gini', 'entropy'],
'randomforestclassifier_min_samples_leaf': [5,10,20,30,50,80,100],
'randomforestclassifier_max_depth': [3,4,6,8,10],
'randomforestclassifier_min_samples_split': [2,4,6,8,10]}]
# Construct grid search
gs = GridSearchCV(estimator = pipe,
param_grid = grid_params,
scoring='accuracy',
cv=5)
gs.fit(train_features, train_target) ----This is where I get an error
ValueError: Invalid parameter randomforestclassifier_criterion for estimator Pipeline(steps=[('columntransformer',
ColumnTransformer(remainder='passthrough',
transformers=[('onehotencoder',
OneHotEncoder(),
['saleschanneltypeid'])])),
('randomforestclassifier', RandomForestClassifier())]). Check the list of available parameters with `estimator.get_params().keys()`.
make_pipeline
效用函数从 transformer/estimator class 名称派生步骤名称。例如,RandomForestClassifier
映射到 randomforestclassifier
步骤。
请相应地调整您的网格搜索参数前缀(即从 RF
到 randomforestclassifier
)。例如,RF__criterion
应该变成 randomforestclassifier__criterion
。
您没有正确地预置关键字。您必须在每个参数前使用 2 个下划线 (__)。您只使用了 1 个下划线 (_),这是行不通的。
我正在尝试 运行 使用 Pipeline、GridSerach 和 CV 的 RandomForest 分类器
拟合数据时出现错误。我不确定如何修复它。 我在解决方案 中发现了一个类似的问题,但对我没有用
将不胜感激。
我的代码是:
column_trans = make_column_transformer((OneHotEncoder(), ['CategoricalData']),
remainder='passthrough')
RF = RandomForestClassifier()
pipe = make_pipeline(column_trans, RF)
# Set grid search params
grid_params = [{'randomforestclassifier_criterion': ['gini', 'entropy'],
'randomforestclassifier_min_samples_leaf': [5,10,20,30,50,80,100],
'randomforestclassifier_max_depth': [3,4,6,8,10],
'randomforestclassifier_min_samples_split': [2,4,6,8,10]}]
# Construct grid search
gs = GridSearchCV(estimator = pipe,
param_grid = grid_params,
scoring='accuracy',
cv=5)
gs.fit(train_features, train_target) ----This is where I get an error
ValueError: Invalid parameter randomforestclassifier_criterion for estimator Pipeline(steps=[('columntransformer',
ColumnTransformer(remainder='passthrough',
transformers=[('onehotencoder',
OneHotEncoder(),
['saleschanneltypeid'])])),
('randomforestclassifier', RandomForestClassifier())]). Check the list of available parameters with `estimator.get_params().keys()`.
make_pipeline
效用函数从 transformer/estimator class 名称派生步骤名称。例如,RandomForestClassifier
映射到 randomforestclassifier
步骤。
请相应地调整您的网格搜索参数前缀(即从 RF
到 randomforestclassifier
)。例如,RF__criterion
应该变成 randomforestclassifier__criterion
。
您没有正确地预置关键字。您必须在每个参数前使用 2 个下划线 (__)。您只使用了 1 个下划线 (_),这是行不通的。