sklearn中的FeatureUnion()和ColumnTransformer()有什么区别?
如果我想构建包含混合数据类型(分类,数字,非结构化文本)的功能的监督模型,而我需要结合使用单独的管道,该使用哪个模型?
来源:https : //scikit-learn.org/stable/modules/generation/sklearn.pipeline.FeatureUnion.html
来源:https : //scikit-learn.org/stable/modules/generated/sklearn.compose.ColumnTransformer.html
根据sklearn文档:
FeatureUnion:连接多个转换器对象的结果。此估算器将变形器对象列表与输入数据并行应用,然后合并结果。将多个特征提取机制组合到单个转换器中很有用。
ColumnTransformer:将变换器应用于数组或熊猫DataFrame的列。该估计器允许分别转换输入的不同列或列子集,并且将每个转换器生成的特征连接起来以形成单个特征空间。这对于异构数据或列状数据很有用,可以将多种特征提取机制或变换组合到单个转换器中。
因此,FeatureUnion将不同的转换器应用于整个输入数据,然后通过将它们合并来组合结果。
另一方面,ColumnTransformer将不同的转换器应用于整个输入数据的不同子集,并再次将结果串联起来。
对于您建议的情况,ColumnTransformer应该是第一步。然后,一旦所有列都转换为数值,就可以通过FeatureUnion进一步转换它们,例如,将PCA和SelectKBest组合在一起
最后,您当然可以将FeatureUnion用作ColumnTransformer,但是您必须在每个分支中都包含一个列/类型选择器,而不是仅将感兴趣的列馈入管道中的下一个转换器,如下所述:https: //ramhiser.com/post/2018-04-16-building-scikit-learn-pipeline-with-pandas-dataframe/
但是,ColumnTransformer正是通过更简单的方式做到了这一点。
| 归档时间: |
|
| 查看次数: |
889 次 |
| 最近记录: |