首页 > 解决方案 > One Hot Encoding 和 LabelEncoder 的区别?

问题描述

我正在研究一个机器学习问题来预测房价,Zip Code这是一个很有用的功能。我也在尝试使用来Random Forest Regressor预测log.price

但是,我应该使用One Hot Encoding还是Label Encoderfor Zip Code?因为我Zip Codes的数据集中有大约 2000 个,并且执行One Hot Encoding会显着扩展列。

https://datascience.stackexchange.com/questions/9443/when-to-use-one-hot-encoding-vs-labelencoder-vs-dictvectorizo​​r

LabelEncoder换种说法:使用而不是One Hot Encodingon有意义吗?Zip Codes

标签: machine-learningscikit-learncategorical-dataone-hot-encoding

解决方案


就像链接说的:

LabelEncoder 可以将 [dog,cat,dog,mouse,cat] 变成 [1,2,1,3,2],但随后强加的序数意味着 dog 和 mouse 的平均值是 cat。仍然有诸如决策树和随机森林之类的算法可以很好地处理分类变量,LabelEncoder 可以用于使用更少的磁盘空间存储值。

是的,你是对的,当你有 2000 个邮政编码类别时,一个热点可能会大量炸毁你的功能集。在许多情况下,当我遇到此类问题时,我选择了二进制编码,并且大多数情况下效果都很好,因此也许值得您一试。

想象一下,你有 9 个特征,将它们从 1 标记到 9,然后对它们进行二进制编码,你将得到:

cat 1 - 0 0 0 1
cat 2 - 0 0 1 0
cat 3 - 0 0 1 1
cat 4 - 0 1 0 0 
cat 5 - 0 1 0 1
cat 6 - 0 1 1 0
cat 7 - 0 1 1 1
cat 8 - 1 0 0 0
cat 9 - 1 0 0 1

好了,您克服了 LabelEncoder 问题,并且您还获得了 4 个特征列,而不是 8 个,这与一种热编码不同。这是二进制编码器背后的基本直觉。


**PS:** 给 2 次方 11 是 2048,并且您有 2000 个邮政编码类别,在一次热编码的情况下,您可以将特征列减少到 11 而不是 1999!

推荐阅读