已关闭此问题为not reproducible or was caused by typos。它目前不接受回答。
此问题是由打印错误或无法再重现的问题引起的。虽然类似的问题可能是on-topic在这里,这一个是解决的方式不太可能帮助未来的读者。
3小时前关闭
Improve this question
我试图构建一个包含预处理Transformer(它只是从数据中删除列)和LDA分类器的管道。我想为每一个都调整超参数,从其他帖子和文档来看,我 * 应该 * 只需要使用pipelineName__param
,带双下划线,但这似乎不起作用。
pp.pprint(sorted(full_pipeline.get_params().keys()))
>>> [...] #lists all possible params for pipeline which I copied into param_grid
from sklearn.model_selection import GridSearchCV
clf_model = LinearDiscriminantAnalysis()
full_pipeline = Pipeline([
('preprocessing', pp_pipeline),
('model', clf_model),
])
param_grid = {
"preprocessing__dropper__drop_attr": [True, False],
"model__solver": ["svd", "lsqr", "eigen"],
}
search = GridSearchCV(clf_model, param_grid, scoring="f1", return_train_score=True, cv=5, verbose=2, n_jobs=-1)
search.fit(X_train, y_train)
pp_pipeline
是一个管道,包含删除列的Transformer和标准缩放器。我已经单独在X_train
数据上测试过了,它可以按预期工作。
上面的代码块抛出的错误是
ValueError: Invalid parameter 'model' for estimator LinearDiscriminantAnalysis().
为什么它试图将model
作为参数而不是管道名称,尽管我已经使用双下划线对其进行了适当的命名?
我尝试过将model
重命名为其他名称,甚至将"model__solver"
完全从param_grid
中删除-如果这样做,我反而得到错误
ValueError: Invalid parameter 'preprocessing' for estimator LinearDiscriminantAnalysis().
所以我肯定漏掉了什么关键的东西
1条答案
按热度按时间bxfogqkk1#
我认为问题在于你将模型
lda
传递给网格搜索,而不是你的管道。GridSearchCV的代码应该是: