gpt4 book ai didi

python - 将 sklearn 的 FunctionTransformer 与字符串数据一起使用?

转载 作者:太空宇宙 更新时间:2023-11-03 14:55:04 25 4
gpt4 key购买 nike

我正在使用 sklearn 的 FunctionTransformer 预处理我的一些数据,这些数据是日期字符串,例如“2015-01-01 11:09:15”。

我的自定义函数将字符串作为输入,但我发现 FunctionTransformer 无法处理字符串,因为在源代码中它没有实现 fit_transform。因此,调用被路由到父类:

     57     def fit(self, X, y=None):
58 if self.validate:
---> 59 check_array(X, self.accept_sparse)
60 return self

check_array 似乎只适用于数字 ndarray。现在我当然可以在 pandas 域中做任何事情,但我想知道在 sklearn 中是否有更好的方法来处理这个问题——尤其是。鉴于我将来可能会使用管道?

谢谢!

最佳答案

似乎 validate 参数就是您要查找的内容: http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.FunctionTransformer.html

这是一个示例,如评论中所述,将其保留为字符串而不是转换为 float 可能更有意义。假设您想将时区信息添加到日期字符串中:

import pandas as pd

def add_TZ(df):
df['date'] = df['date'].astype(str) + "Z"

data = { 'date' : ["2015-01-01 11:00:00", "2015-01-01 11:15:00", "2015-01-01 11:30:00"],
'value' : [4., 3., 2.]}

df = pd.DataFrame(data)

如您所述,由于检查,这将失败:

ft = FunctionTransformer(func=add_TZ)
ft.fit_transform(df)

输出:

ValueError: could not convert string to float: '2015-01-01 11:30:00'

这个有效:

ft = FunctionTransformer(func=add_TZ, validate=False)
ft.fit_transform(df)

输出:

    date                    value
0 2015-01-01 11:00:00Z 4.0
1 2015-01-01 11:15:00Z 3.0
2 2015-01-01 11:30:00Z 2.0

关于python - 将 sklearn 的 FunctionTransformer 与字符串数据一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43274423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com