首页 > 解决方案 > 如何在 Pandas 中不使用 One-Hot-Encoding 重新编码 53k 个唯一地址(保存为对象)?

问题描述

我的数据框有 380 万行和 20 个左右的特征,其中许多是分类的。在减少功能数量后,我可以“虚拟化”一个包含 20 个左右类别的关键列,并且我的 COLAB(据称)运行 TPU 不会崩溃。

但是还有另一列包含大约 53,000 个唯一值。试图“假装”这个功能会使我的会话崩溃。我不能放弃这个专栏。

我查过目标编码,但数据集非常不平衡,我担心目标泄漏。有没有解决的办法?

编辑:我的目标变量是一个简单的二进制变量。

标签: pandasscikit-learnone-hot-encoding

解决方案


在不了解问题/功能的更多细节的情况下,没有明显的方法可以做到这一点。这是数据科学/机器学习的一部分,它是一门艺术,而不是一门科学。几个想法:

  1. 一个热编码所有内容,然后使用降维算法删除一些列(PCA、SVD 等)。
  2. 只有一个热编码一些值(比如将其限制为 10 或 100 个类别,而不是 53,000 个),然后对于其余的,使用“其他”类别。
  3. 如果可以为这些变量构建嵌入(并非总是可能),您可以对此进行探索。
  4. 按某些基础功能对列中的值进行分组/分箱。即,如果该功能类似于days_since_X,则将其装箱 100 或其他东西。或者,如果它是动物的名称,请按类型(哺乳动物、爬行动物等)将其分组

推荐阅读