问题描述
在我的情况下,我想对数据集中的5个不同的列进行编码,但问题是这5个列具有许多唯一值。
如果我使用标签编码器对它们进行编码,则会添加不必要的命令,而这是不正确的,而如果我执行OHE或pd.get_dummies,那么我最终会拥有很多会增加数据稀疏性的功能。
我目前正在处理有监督的学习问题,以下是每列的唯一值:
Job_Role : Unique categorical values = 29
Country : Unique categorical values = 12
State : Unique categorical values = 14
Segment : Unique categorical values = 12
Unit : Unique categorical values = 10
我已经研究了多个参考文献,但不确定最佳方法。在这种情况下,应该具有最少数量的功能并对我的模型产生最大的积极影响
解决方法
据我所知,通常在这些情况下使用OneHotEncoder
,但正如您所说,数据中有很多唯一值。之前我一直在寻找项目的解决方案,并且看到了以下不同的方式,
-
OneHotEncoder + PCA:我认为这种方式不太正确,因为PCA是为连续变量设计的。[*]
-
Entity Embeddings:我不太了解这种方式,但是您可以从标题中的链接进行检查。
-
BinaryEncoder:我认为,当您有大量类别并且进行一次热编码会增加尺寸并进而增加模型复杂度时,这很有用。因此,二进制编码是对维数较少的分类变量进行编码的好选择。
-
category_encoders
库中还有其他解决方案。