【问题标题】:How to handle categorical features with many unique values in python/Scikit learn如何在 python/Scikit 学习中处理具有许多唯一值的分类特征
【发布时间】:2021-01-01 04:23:31
【问题描述】:

在我的情况下,我想在我的数据集中编码大约 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

我已经查看了多个参考资料,但不确定最佳方法。在这种情况下,应该怎样才能使对我的模型产生最大积极影响的特征数量最少

【问题讨论】:

    标签: python-3.x pandas encoding scikit-learn categorical-data


    【解决方案1】:

    据我所知,这些情况通常使用OneHotEncoder,但正如您所说,您的数据中有很多独特的值。之前找过一个项目的解决方案,看到了不同的方法如下,

    1. OneHotEncoder+PCA:我觉得这种方式不太对,因为PCA是为连续变量设计的。[*]

    2. Entity Embeddings:这个方法我不是很了解,不过你可以从标题中的链接查看。

    3. BinaryEncoder:我认为,当您有大量类别并且进行 one-hot 编码会增加维度并反过来增加模型复杂性时,这很有用。因此,二进制编码是对维数较少的分类变量进行编码的不错选择。

    4. category_encoders 库中还有其他一些解决方案。

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 2015-12-17
      • 1970-01-01
      • 2016-03-26
      • 2016-03-09
      • 2019-09-29
      • 2018-02-06
      • 2019-07-13
      • 2014-02-17
      相关资源
      最近更新 更多