如何让FeatureUnion返回Dataframe

问题描述 投票:0回答:2

所以我目前有一个包含很多客户变压器的管道:

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返回pandas数据框?

python-2.7 machine-learning scikit-learn pipeline feature-extraction
2个回答
2
投票

要让

FeatureUnion
输出
DataFrame
,您可以使用此
博客文章
中的 PandasFeatureUnion。另请参阅要点


0
投票

在 scikit-learn 1.5.2 中,您可以使用以下命令将转换器的输出设置为数据帧:

from sklearn import set_config set_config(transform_output = "pandas")
请查看

set_config文档以获取更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.