0

我在数据集中有几个高基数变量,并希望将它们转换为虚拟变量。他们都有500多个级别。当我使用 pandas get_dummies 时,矩阵变得如此之大,我的程序崩溃了。

pd.get_dummies(data, sparse=True, drop_first=True, dummy_na=True)

除了使用一种热编码之外,我不知道处理高基数变量的更好方法,但是它增加了数据的大小,以至于内存无法处理它。有没有人有更好的解决方案?

4

1 回答 1

2
  • 方法 1:对于像 RF 这样的非线性算法,您还可以将分类变量替换为它在训练集中出现的次数。这将它变成了一个单一的功能。

  • 方法2:如果你可以让one-hot encoding适合你的记忆,你可以考虑先应用one-hot encoding,然后应用一些降维方法(如PCA)或embedding方法(word2Vec等)来降维,在将它们放入任何 ML 算法之前。

这里有更多讨论: https ://www.kaggle.com/general/16927

于 2017-03-21T02:45:35.583 回答