如何解决如何为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 举报,一经查实,本站将立刻删除。