对 FeatureUnions (pandas) 工作的理解混乱

bks*_*shi 1 python pipeline pandas scikit-learn

我正在学习 Pandas 中的管道和功能联合。我了解管道的工作,这有助于将一系列转换应用于给定的数据集。但是,我对功能联合感到困惑。我已经阅读了文档,其中说变压器是并行应用的,然后将结果连接起来。

我对此有疑问,如果我们将所有转换器应用于整个数据集或不同的转换器仅应用于选定的特征?如果到整个数据集,我们如何连接结果?另外,是否有任何我应该使用 FeatureUnion 的一般用例?

Viv*_*mar 6

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

此处文档中的解释应该会给您一些想法。

我认为您在阅读当前版本文档后感到困惑。以前FeatureUnion用来ColumnTransformer做 0.20 版本中正在做的事情。在这里比较最新的例子:

与以前的版本文档在这里:

你会注意到相似之处。

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

更新评论

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

拿这个例子:

estimators = [('linear_pca', PCA(n_components=5)), 
              ('kernel_pca', KernelPCA(n_components=10))]
combined = FeatureUnion(estimators)
Run Code Online (Sandbox Code Playgroud)

假设您的原始数据有 100 个特征。上述 FeatureUnion 将仅返回 15 个新功能。

  • PCA 将获取您所有的 100 个特征并将它们转换为仅保留 5 个组件,这些组件将返回给 FeatureUnion。

  • 同样,KernelPCA 也将获得所有 100 个特征,并在转换后的数据中保留 10 个组件。

  • 然后 FeatureUnion 将连接这 5 个和 10 个功能,以向您返回 15 个新功能。