【发布时间】:2020-11-22 12:52:15
【问题描述】:
我想在 sklearn 中执行超参数搜索以选择预处理步骤和模型,如下所示:
pipeline = Pipeline([("combiner", PolynomialFeatures()),
("dimred", PCA()),
("classifier", RandomForestClassifier())])
parameters = [{"combiner": [None]},
{"combiner": [PolynomialFeatures()], "combiner__degree": [2], "combiner__interaction_only": [False, True]},
{"dimred": [None]},
{"dimred": [PCA()], "dimred__n_components": [.95, .75]},
{"classifier": [RandomForestClassifier(n_estimators=100, class_weight="balanced")],
"classifier__max_depth": [5, 10, None]},
{"classifier": [KNeighborsClassifier(weights="distance")],
"classifier__n_neighbors": [3, 7, 11]}]
CV = GridSearchCV(pipeline, parameters, cv=5, scoring="f1_weighted", refit=True, n_jobs=-1)
CV.fit(train_X, train_y)
当然,我需要具有最佳参数的最佳管道的结果。但是,当我使用 CV.best_estimator_ 请求最佳估算器时,我只得到获胜的组件,而不是超参数:
Pipeline(steps=[('combiner', None), ('dimred', PCA()),
('classifier', RandomForestClassifier())])
当我打印出CV.best_params_ 时,我得到的信息更短(仅包含Pipeline 的第一个元素,combiner,没有关于dimred、classifier 的任何信息):
{'combiner': None}
如何获得组件及其超参数的最佳管道组合?
【问题讨论】:
标签: python machine-learning scikit-learn data-science hyperparameters