有时候我设计的机器学习管道看起来像这样:
通常我不得不使用自己的“合并特征”函数来拼凑这些“分支”管道。然而,如果我能将这些整合进一个sklearn Pipeline对象中就太好了。我该如何做到这一点呢?(伪代码也可以。)
回答:
只要“整个数据集”指的是相同的特征,这正是FeatureUnion
所做的功能:
make_pipeline(make_union(PolynomialFeatures(), PCA()), RFE(RandomForestClassifier()))
如果你有两组不同的特征想要合并,你首先需要将它们放入一个单一的数据集中,然后让FeatureUnion
的每个分支首先选择它应该操作的特征。[目前没有现成的函数可以做到这一点,但例如使用FunctionTransformer()很容易实现]