了解 OneHot 编码

什么是 OneHot 编码

在数据和机器学习领域, OneHot 编码是一组二进制数据, 以 1 和 0 区分真假, 高低, 开合… 在统计学领域, 用于表示分类数据.

在使用 TensorFlow 的时候, 我们会使用 tf.one_hot() 对张量数据进行编码转换, 转换后的数据 维度 升高, 数据特征降低(原来的分类 => 编号 => 位置+真假).

参考:

为什么在 TensorFlow 中使用 OneHot 编码

假设数据集中有个分类数据(例如: 颜色), 特征值为 Red, Yellow, Green 三种, 为了方便导入到机器学习算法中, 需要将字符串转换为数字.

最简单的方法就是构建一个映射 {"Red":1,"Yellow":2,"Blue":3}, 然后使用数字替代原有的字符串.

但是这么做可能会在机器学习中产生无法预测的负面影响, 机器可能会认为 Yellow > Red (因为 2>1), Red + Yellow = Blue (因为 1+2=3)… 因为机器无法知道你的数据是通过分类数据映射得来的.

解决方案就是使用 OneHot 编码, 创建一个 N 维向量(其中 N 是数据集分类数据中的分类数), 我们的例子中 N = 3, 因为有三种不同颜色. 每种分类都分配到向量中某个位置, 当数据集中出现该类别, 就将向量中对应位置开启, 否则关闭.

参考:

Donate - Support to make this site better.
捐助 - 支持我让我做得更好.