如何使 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 返回数据框的主要内容,如果未能解决你的问题,请参考以下文章