data-science - One-Hot 编码或不 One-Hot 编码
问题描述
我的数据集有星期几(周一 = 1,周二 = 2,周三 = 3 ...)
我的数据看起来像这样
WeekDay Col1 Col2 Target
1 2.2 8 126
6 3.5 4 354
1 8.0 2 322
3 7.2 4 465
7 3.2 5 404
6 3.8 3 134
1 3.6 5 455
1 5.5 8 345
6 7.0 6 442
我应该对 WeekDay 进行一次热编码,使其看起来像这样吗?
WeekDay Col1 Col2 Target Mo Tu We Th Fr Sa Su
1 2.2 8 126 1 0 0 0 0 0 0
6 3.5 4 354 0 0 0 0 0 1 0
1 8.0 2 322 1 0 0 0 0 0 0
3 7.2 4 465 0 0 1 0 0 0 0
7 3.2 5 404 0 0 0 0 0 0 1
6 3.8 3 134 0 0 0 0 0 1 0
1 3.6 5 455 1 0 0 0 0 0 0
1 5.5 8 345 1 0 0 0 0 0 0
6 7.0 6 442 0 0 0 0 0 1 0
我将使用随机森林
解决方案
您不应该使用一种热编码,因为您使用的是随机森林模型。RF 模型也能够从标签编码中找到模式,并且通常 RF 模型在使用热编码时表现更差,因为它们可能会在创建树时决定丢失几天。此外,一种热编码会在您的数据中引入维度灾难,这从来都不是好事。
在线性回归或逻辑回归等方法的情况下,一种热编码更好,其中 1 即星期一可能比 6 即星期六更重要,因为这些模型在后端有一个乘法模型。
推荐阅读
- ios - 通过按钮替换 ViewController,线程 1:EXC_BAD_INSTRUCTION
- google-apps-script - Google Sheets Apps 脚本 > 查找图像比例
- php - 简单的表单输入类型提交和重置不起作用
- composer-php - 在 TYPO3 8.7 中,composer install 将typo3 和 index.php 作为目录和文件安装,而不是作为符号链接
- android - 库模块依赖与 App 模块依赖
- php - 多频道片段 Youtube API
- python - OS X 如何整合 Python 2 的安装?我收到不一致的模块导入错误
- android - 是否有计划开发 Android 的 golang 版本?
- python - pymongo.errors.ServerSelectionTimeoutError:小时必须在 0..23
- android - Android P:如果用户已回复通知,`NotificationManager.cancel` 将不起作用