如何使 FeatureUnion 返回数据框

Posted

技术标签:

【中文标题】如何使 FeatureUnion 返回数据框【英文标题】:How to make FeatureUnion return Dataframe 【发布时间】:2016-08-07 17:23:27 【问题描述】:

所以我目前有一个拥有很多客户转换器的管道:

p = Pipeline([
("GetTimeFromDate",TimeTransformer("Date")), #Custom Transformer that adds ["time"] column
("GetZipFromAddress",ZipTransformer("Address")), #Custom Transformer that adds ["zip"] column
("GroupByTimeandZip",GroupByTransformer(["time","zip"]) #Custom Transformer that adds onehot columns
])

每个转换器都接收一个 pandas 数据帧,并返回包含一个或多个新列的相同数据帧。它实际上工作得很好,但我怎样才能并行运行“GetTimeFromDate”和“GetZipFromAddress”步骤?

我想使用 FeatureUnion:

f = FeatureUnion([  
("GetTimeFromDate",TimeTransformer("Date")), #Custom Transformer that adds ["time"] column
("GetZipFromAddress",ZipTransformer("Address")), #Custom Transformer that adds ["zip"] column])
])

p = Pipeline([
("FeatureUnionStep",f),
("GroupByTimeandZip",GroupByTransformer(["time","zip"]) #Custom Transformer that adds onehot columns
])

但问题是 FeatureUnion 返回一个 numpy.ndarray,但“GroupByTimeandZip”步骤需要一个数据框。

有没有办法让 FeatureUnion 返回熊猫数据框?

【问题讨论】:

您好,要将 FeatureUnion 与异构数据源一起使用,请参阅:scikit-learn.org/stable/auto_examples/hetero_feature_union.html 【参考方案1】:

对于FeatureUnion 输出DataFrame,您可以使用此blog post 中的PandasFeatureUnion。另请参阅gist。

【讨论】:

以上是关于如何使 FeatureUnion 返回数据框的主要内容,如果未能解决你的问题,请参考以下文章

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

如何使用从 API 调用返回的 JSON 数据使 jquery 自动建议

当返回的列表长度与数据框列数相同时,应用 + 列表推导会给出 ValueError

如何将数据框中的行数写入 JSON 文件?

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

Sklearn:异质特征的FeatureUnion与管道中的分类器产生不兼容的行尺寸错误