24

我想知道我们是否可以在sklearn.pipeline. 例如,对于分类问题,我可能想尝试ExtraTreesClassifier使用 AND 而不在其PCA前面进行转换。在实践中,它可能是一个带有额外参数的管道,用于指定PCA步骤的切换,以便我可以通过GridSearch等对其进行优化。我在 sklearn 源代码中没有看到这样的实现,但是有什么解决方法吗?

ExtraTreesClassifier.max_features此外,由于管道中后续步骤的可能参数值可能取决于前一步中的参数(例如,取决于的有效值PCA.n_components),是否可以在sklearn.pipeline和中指定这种条件依赖sklearn.grid_search

谢谢!

4

2 回答 2

17
  • Pipeline当前无法在网格搜索中将步骤设为可选,但您可以使用布尔参数将该PCA类包装到您自己的OptionalPCA组件中,以便在请求时作为快速解决方法关闭 PCA。您可能想看看hyperopt以设置更复杂的搜索空间。我认为默认情况下它具有良好的 sklearn 集成来支持这种模式,但我再也找不到文档了。也许看看这个谈话

  • 对于相关参数问题,GridSearchCV支持参数树来处理这种情况,如文档中所示

于 2013-10-09T07:04:38.383 回答
17

文档

单个步骤也可以作为参数替换,并且可以通过将非最终步骤设置为 None 来忽略它们:

from sklearn.linear_model import LogisticRegression
params = dict(reduce_dim=[None, PCA(5), PCA(10)],
              clf=[SVC(), LogisticRegression()],
              clf__C=[0.1, 10, 100])
grid_search = GridSearchCV(pipe, param_grid=params)
于 2017-04-30T22:17:04.403 回答