我有大量(数万)类别的结构化数据,这些类别被组织成列。目标是将数据输入梯度提升机算法以进行特定预测。
一些列对同一个样本有多个条目,即,列 1 的样本 1 具有第 1 行的条目 1 和第 2 行的条目 2。这是一个例子:
df = pd.DataFrame({'pat': [1, 2, 3, 3, 3, 3], 'diag_type': ['D', 'OP', 'D', 'D', 'D', 'OP'],
'diag': ['D_1', 'OP_1', 'D_1', 'D_3', 'D_4', 'OP_2']})
pat diag_type diag
0 1 D D_1
1 2 OP OP_1
2 3 D D_1
3 3 D D_3
4 3 D D_4
5 3 OP OP_2
由于我有这么多类别,我需要进行一些重组,我认为实体嵌入是最好的方法。但是,我还没有找到重组数据框的好方法。我考虑过进行某种虚拟编码,如this stackoverflow post中所示,例如:
d.get_dummies(df.set_index('pat')).sum(level=0)
diag_type_D diag_type_OP diag_D_1 diag_D_3 diag_D_4 diag_OP_1 diag_OP_2
pat
1 1 0 1 0 0 0 0
2 0 1 0 0 0 1 0
3 3 1 1 1 1 0 1
但后来我仍然得到很多稀疏,这需要很长时间。有更好的方法吗?