我有类似的数据集:
profile category target
0 1 [5, 10] 1
1 2 [1] 0
2 3 [23, 5000] 1
3 4 [700, 4500] 0
如何处理类别功能,此表可能还具有其他附加功能。一种热编码会导致占用过多空间,因为行数约为1000万。任何建议都会有所帮助。
答案 0 :(得分:1)
我的想法是拆分此数组into new columns:
这将导致以下数据框:
profile 0 1 target
0 1 5 10 1
1 2 1 0
2 3 23 5000 1
3 4 700 4500 0
在下一步中,您可以调整它,以this为基础,将类别归为要素(如果配置文件具有此类别,则以1填充),这将导致以下数据框:
profile 1 ... 5 ... 10 ... 23 target
0 1 0 1 0 0 1
1 2 1 0 0 0 0
2 3 0 0 0 1 1
3 4 0 0 0 0 0
您将把每个类别都作为一项功能,可以为您提供帮助(这类似于文本分类问题)。然后,您可以使用一些降低尺寸的技术,例如pca。
通过这种方法,您会尊重类别的行为,并且以后可以通过一些数学技巧来减小维度。
答案 1 :(得分:0)
MultiLabelBinarizer 是针对此类问题的解决方案,该问题使稀疏输出的内存不足,您可以将其他特征转换为稀疏矩阵,而不是将所有特征组合到机器学习模型中。