我试图创建一个直线并微调超参数,但是我尝试使用fit,我得到了错误
ValueError: Invalid parameter n_esitmators for estimator Pipeline(steps=[('rfc', RandomForestClassifier())]). Check the list of available parameters with `estimator.get_params().keys()`.我想找人帮忙处理这个。
这是我使用的代码:
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
from sklearn.model_selection import RandomizedSearchCV
#Classifier Pipeline
pipeline = Pipeline([
('rfc', RandomForestClassifier())
])
# Params for classifier
params = {'n_estimators': [5,20,50,100,150],
"max_depth": [1, 3,5,10,20,30,50],
"max_features": [1, 3,5,10,20,30,45],
"min_samples_split": [1, 3,5,10],
"min_samples_leaf": [1, 3,5,10]}
# Grid Search Execute
rf_rnd = RandomizedSearchCV(estimator=pipeline, param_distributions = params, cv=5, verbose=2, random_state=0, n_jobs=-1)
rf_rnd.fit(training_data, target)作了一些修改:
from sklearn.ensemble import RandomForestClassifier
from sklearn.pipeline import Pipeline
from sklearn.model_selection import RandomizedSearchCV
#Classifier Pipeline
pipeline = Pipeline([
('rfc', RandomForestClassifier())
])
# Params for classifier
params = {'estimator__rfc__n_estimators': [5,20,50,100,150],
"estimator__rfc__max_depth": [1, 3,5,10,20,30,50],
"estimator__rfc__max_features": [1, 3,5,10,20,30,45],
"estimator__rfc__min_samples_split": [1, 3,5,10],
"estimator__rfc__min_samples_leaf": [1, 3,5,10]}
# Grid Search Execute
rf_rnd = RandomizedSearchCV(estimator=pipeline, param_distributions = params, cv=5, random_state=0, n_jobs=-1, return_train_score=True)
现在的错误是:
ValueError:用于估计器管道(steps=(‘rfc’,RandomForestClassifier())的无效参数估计器。使用
estimator.get_params().keys()检查可用参数的列表。
这就是estimator.get_params().keys()输出的内容:
dict_keys('cv',‘误差_得分’,‘估算者__记忆’,‘估计者__步骤’,‘估计者_详细’,‘估计者__rfc__深度’,‘估计者_rfc_引导’,‘估计者_rfc_ccp_α’,‘估计者__rfc_类_权重’,‘估计者__rfc_判据’,‘估计器__rfc__max_深度’,‘估计器__rfc__max_特点’,‘估值器__rfc__min_叶_节点’,‘估计器__rfc_max_样本’,‘估计器__rfc_min__杂质_减少’,‘估计器__rfc_min_杂质_拆分’,‘估计器__rfc_min_样_叶’,‘估计器__rfc__min__min__min_重量__叶’,‘估计器__rfc_n_n_估计器’,‘估计器_rfc_n_工作’,‘估计器_rfc__min_重量_叶’,‘估计器__rfc_n_n_估计器’,“估计器__rfc__oob_score”、“估计器__rfc__随机_状态”、“估计器_rfc_详细”、‘估计器_rfc__温_start’、‘估计器’、'iid‘、'n_iter’、'n_jobs‘、’param_分布‘、’预分派‘、’随机_状态‘、'refit’、‘pre_train_score’、‘评分’、‘详细’)
)
发布于 2022-03-27 03:18:55
当您使用具有任意搜索(随机或网格)的管道时,param_grid键必须遵循以下语法(步骤名)__(Param)。因此,您应该对其他参数使用rfc__n_estimators等。
总结一下,只需删除您在上次修改中添加的estimator__部件
https://stackoverflow.com/questions/71628211
复制相似问题