Scikit learn 功能联合vs柱变压器?

Scikit learn 功能联合vs柱变压器?,scikit-learn,Scikit Learn,sklearn中FeatureUnion()和ColumnTransformer()的区别是什么 如果我想要构建一个包含混合数据类型(分类、数字、非结构化文本)的功能的监督模型,并且需要组合单独的管道,那么应该使用哪种方法 资料来源: 来源:根据sklearn文档: FeatureUnion:连接多个transformer对象的结果。该估计器将变压器对象列表与输入数据并行应用,然后将结果串联起来。这对于将多个特征提取机制组合到单个转换器中非常有用 ColumnTransformer:将转换器应用

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

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

资料来源:


来源:

根据sklearn文档:

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

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

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

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

对于您提议的情况,ColumnTransformer应该是第一步。然后,一旦所有列都转换为数字,使用FeatureUnion,您就可以通过组合PCA和SelectKBest来进一步转换它们

最后,您当然可以将FeatureUnion用作ColumnTransformer,但您必须在每个分支中包含一个列/类型选择器,而不是只将感兴趣的列输入管道中的下一个转换器,如下所述:


然而,ColumnTransformer正是以一种更简单的方式实现了这一点。

这两种方法都用于将独立变换(transformer)组合成一个单独的变换,所谓独立,我指的是不需要按照定义的顺序执行的变换(transformer)。这是因为与常规管道不同,一个变压器不会应用于另一个变压器的输出

主要区别在于:feature union对象中的每个转换器都将整个数据作为输入。而在列transformer对象中,它们只获取部分数据作为输入。最后,它们都将每个转换器的结果连接起来。两者都可以使用并行处理