将对象数据类型转换为数字数据类型有两种方法,第一种是 One-Hot 编码,第二种是将数字标签简单地映射到不同的值。
例如,对于包含三个不同值“child”、“adult”和“old”的 Age 列,该列的 One-Hot 编码为:
| 年龄 | Age_child | 年龄_成人 | 年龄 |
|---|---|---|---|
| 孩子 | 1 | 0 | 0 |
| 成人 | 0 | 1 | 0 |
| 老的 | 0 | 0 | 1 |
而数字标签到不同值的简单映射可能是
| 年龄 | _年龄 |
|---|---|
| 孩子 | 1 |
| 成人 | 2 |
| 老的 | 3 |
我所理解的 One-Hot 编码可以将列数增加很多倍。例如,考虑 10 列,每列平均有 3 个不同的值,那么生成的日期集将有 30 列。然而,简单的数字映射不会改变数据集的大小(列),只是将数字标签分配给每个不同的值。
那么问题来了,One-Hot 编码是否会增加复杂和大型数据集的维数和稀疏性?在这两种方法中,更适合机器或深度学习分析的方法是什么?两者有什么优缺点吗?