machine-learning - One Hot Encoding 和 LabelEncoder 的区别?
问题描述
我正在研究一个机器学习问题来预测房价,Zip Code
这是一个很有用的功能。我也在尝试使用来Random Forest Regressor
预测log
.price
但是,我应该使用One Hot Encoding
还是Label Encoder
for Zip Code
?因为我Zip Codes
的数据集中有大约 2000 个,并且执行One Hot Encoding
会显着扩展列。
LabelEncoder
换种说法:使用而不是One Hot Encoding
on有意义吗?Zip Codes
解决方案
就像链接说的:
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!
推荐阅读
- ampl - 打印在多个集合上定义的变量
- javascript - 如何使用useState更新数组中对象的值?
- kubernetes - 有没有办法在 kubernetes 入口上进行功能切换?
- azure - Azure kubernetes - Prometheus 访问受 Azure AD 保护的应用程序
- r - 使用 LightGBM 进行多分类
- reactjs - 如何在 apollo graphql reactjs 中使用 detalization 查询?
- highcharts - highcharts - 错误分配的近似图例项(边缘情况)
- mysql - 在 MySQL 中插入数据时出现错误 1136 (21S01)
- php - Can I submit a PHP form within Cordova?
- sql - 问题:连接两个具有日期条件的数据集