理解FeatureUnions(pandas)工作时出现困惑

时间:2018-10-04 19:38:59

标签: python pandas scikit-learn pipeline

我正在学习有关熊猫的管道和要素联合的信息。我了解管道的工作原理,这有助于将一系列转换应用于给定的数据集。但是,我对要素联合感到困惑。我已经读过docs,上面说变压器是并联使用的,然后将结果串联起来。

对此我有疑问,是我们将所有变形器应用于整个数据集,还是仅将不同的变形器应用于所选要素?如果对于整个数据集,我们如何将结果连接起来?另外,在一般情况下我应该使用FeatureUnion吗?

1 个答案:

答案 0 :(得分:3)

FeatureUnion用于要将不同类型的变换应用于特征时。可能是对于同一组功能,您想要应用多种类型的转换,并希望将所有这些转换的组合用作新功能。

the documentation here中的解释应该可以使您有所了解。

我认为您在阅读当前版本文档后感到困惑。先前FeatureUnion在版本0.20中用于执行ColumnTransformer的操作。在这里比较最新的示例:

此处具有先前版本的文档:

您会发现相似之处。

您可以尝试在Stackoverflow上搜索以找到FeatureUnion的不同用例。如果仍然不满意,请随时提出更多具体问题。了解您要对数据集进行的操作可能会有所帮助。

更新评论

功能数量可能会增加或减少。如果您不将原始功能保留在转换中,FeatureUnion将不会保留。

以这个例子为例:

estimators = [('linear_pca', PCA(n_components=5)), 
              ('kernel_pca', KernelPCA(n_components=10))]
combined = FeatureUnion(estimators)

假设原始数据具有100个功能。上面的FeatureUnion将仅返回15个新功能。

  • PCA将获得您的全部100个功能并将其转换为仅保留5个组件,这些组件将返回给FeatureUnion。

  • 同样,KernelPCA还将获得您的全部100个功能,并在转换后的数据中保留10个组件。

  • FeatureUnion然后将这5个和10个功能串联起来,以向您返回15个新功能。