摘要: 不懂One Hot编码?让大神手把手教你(文中代码可以直接运行),用小例子清晰明了的带你进入One hot 编码!
更多深度文章,请关注:https://yq.aliyun.com/cloud
机器学习算法无法直接用于数据分类。数据分类必须转换为数字才能进一步进行。
在本教程中,你将发现如何将输入或输出的序列数据转换为一种热编码,以便于你在Python中深度学习的序列分类问题中使用。
· 1.什么是整数编码和One-Hot编码,以及为什么它们在机器学习中是必需的。
· 2.如何在Python中手工计算一个整数编码和One-Hot编码。
· 3.如何使用scikit-learn和Keras库来自动对Python中的序列数据进行编码。
3.One-Hot Encode with scikit-learn.
One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
接下来,我们可以创建一个二进制向量来表示每个整数值。对于2个可能的整数值,向量的长度为2。
编码为0的“红色”标签将用二进制向量[1,0]表示,其中第0个索引被标记为值1。然后,编码为1的“绿色”标签将用一个二进制向量[0,1],其中第一个索引被标记为1。
One hot 编码进行数据的分类更准确,许多机器学习算法无法直接用于数据分类。数据的类别必须转换成数字,对于分类的输入和输出变量都是一样的。
我们可以直接使用整数编码,需要时重新调整。这可能适用于在类别之间存在自然关系的问题,例如温度“冷”(0)和”热“(1)的标签。
当没有关系时,可能会出现问题,一个例子可能是标签的“狗”和“猫”。
在这些情况下,我们想让网络更具表现力,为每个可能的标签值提供概率式数字。这有助于进行问题网络建模。当输出变量使用one-hot编码时,它可以提供比单个标签更准确的一组预测。
在这个例子中,我们将假设我们有一个字符串的例子,但是示例序列并不涵盖所有可能的例子。
我们将假设所有可能输入是小写字母和空格的完整字母表。因此,我们将以此展示如何滚动我们自己的one hot编码。
接下来,特定字符的索引标记为1。我们可以看到,编码为7的第一个字母“h”整数由二进制向量表示,长度为27,第七个索引标记为1。
最后,我们反转第一个字母的编码并打印结果。我们通过使用NumPy argmax()函数定位具有最大值的二进制向量中的索引,然后使用字符值的反向查找表中的整数进行整数。