微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何为catboost编码列表列?

如何解决如何为catboost编码列表列?

我有一个数据集,其中某些列包含列表:

import pandas as pd

df = pd.DataFrame(
    {'var1': [1,2,3,1,3],'var2': [1,2],'var3': [["A","B","C"],["A",None,"B"],["C","A"],["D","A"]]
    }
)

    var1    var2    var3
0      1       1    [A,B,C]
1      2       1    [A,C]
2      3       1    None
3      1       2    [A,B]
4      2       2    [C,A]
5      3       2    [D,A]

由于var3列表中的值可以混排,并且我们不能假设任何特定的顺序,因此我想到的为建模准备列的唯一方法是单点编码。可以很容易做到:

df["var3"] = df["var3"].apply(lambda x: [str(x)] if type(x) is not list else x)

mlb = MultiLabelBinarizer()
mlb.fit_transform(df["var3"])

导致:

array([[1,0],[1,[0,1],0]])

但是,引用catboost文档:

注意。预处理期间请勿使用一键编码。这个 影响训练速度和结果质量。

因此,我想问一下是否还有其他方法可以使用catboost对该列进行编码以进行建模?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。