问题描述
我有一个数据集,其中某些列包含列表:
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 (将#修改为@)