featureUnion vs columnTransformer?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了featureUnion vs columnTransformer?相关的知识,希望对你有一定的参考价值。

sklearn中的FeatureUnion()和ColumnTransformer()有什么区别?

如果我想构建一个包含混合数据类型(分类,数字,非结构化文本)的功能的监督模型,我应该使用哪些我需要组合单独的管道?

来源:https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.FeatureUnion.html

来源:https://scikit-learn.org/stable/modules/generated/sklearn.compose.ColumnTransformer.html

答案

根据sklearn文档:

FeatureUnion:连接多个变换器对象的结果。此估计器将变换器对象列表与输入数据并行应用,然后连接结果。这对于将多个特征提取机制组合到单个变换器中非常有用。

ColumnTransformer:将变换器应用于数组的列或pandas DataFrame。该估计器允许输入的不同列或列子集分别变换,并且每个变换器生成的特征将被连接以形成单个特征空间。这对于异构或柱状数据非常有用,可将多个特征提取机制或转换组合到单个变换器中。

因此,FeatureUnion将不同的变换器应用于整个输入数据,然后通过连接它们来组合结果。

另一方面,ColumnTransformer将不同的变换器应用于整个输入数据的不同子集,并再次连接结果。

对于你提出的情况,ColumnTransformer应该是第一步。然后,一旦所有列都转换为数字,使用FeatureUnion,您可以进一步转换它们,例如,结合PCA和SelectKBest

最后,您当然可以使用FeatureUnion作为ColumnTransformer,但是您必须在每个分支中包含一个列/类型选择器,而不是只向源于管道的下一个转换器中包含感兴趣的列,如下所述:https://ramhiser.com/post/2018-04-16-building-scikit-learn-pipeline-with-pandas-dataframe/

但是,ColumnTransformer以更简单的方式完成了这一过程。

以上是关于featureUnion vs columnTransformer?的主要内容,如果未能解决你的问题,请参考以下文章

如何使 FeatureUnion 返回数据框

如何使用管道和 FeatureUnion 添加功能

如何使用 FeatureUnion 构建参数网格?

使用 ColumnTransformer/FeatureUnion 后构建完整数据框(特征值 + 名称)的推荐方法是啥?

scikit-learn:FeatureUnion 包含手工制作的功能

Scikit Learn 从管道内的 FeatureUnion 中提取特征名称