是否可以在 sklearn 管道中切换某个步骤



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

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

谢谢!

从文档中:

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

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

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

相关内容

  • 没有找到相关文章

最新更新