如何为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 (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...