one-hot 编码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了one-hot 编码相关的知识,希望对你有一定的参考价值。

参考技术A 1、什么是独热码

独热码,在英文文献中称做 one-hot code, 直观来说就是有多少个状态就有多少比特,而且只有一个比特为1,其他全为0的一种码制,更加详细参加 one_hot code(维基百科) 。在机器学习中对于离散型的分类型的数据,需要对其进行数字化比如说性别这一属性,只能有男性或者女性或者其他这三种值,如何对这三个值进行数字化表达?一种简单的方式就是男性为0,女性为1,其他为2,这样做有什么问题?

使用上面简单的序列对分类值进行表示后,进行模型训练时可能会产生一个问题就是特征的因为数字值得不同影响模型的训练效果,在模型训练的过程中不同的值使得同一特征在样本中的权重可能发生变化,假如直接编码成1000,是不是比编码成1对模型的的影响更大。为了解决上述的问题,使训练过程中不受到因为分类值表示的问题对模型产生的负面影响,引入独热码对分类型的特征进行独热码编码。

2、编码过程

假如只有一个特征是离散值:

sex:male, female,other

该特征总共有3个不同的分类值,此时需要3个bit位表示该特征是什么值,对应bit位为1的位置对应原来的特征的值(一般情况下可以将原始的特征的取值进行排序,以便于后期使用),此时得到独热码为100男性 ,010女性,001其他

假如多个特征需要独热码编码,那么久按照上面的方法依次将每个特征的独热码拼接起来:

sex:male, female,other

grade:一年级, 二年级,三年级, 四年级

此时对于输入为sex:male; grade: 四年级进行独热编码,可以首先将sex按照上面的进行编码得到100,然后按照grade进行编码为0001,那么两者连接起来得到最后的独热码1000001;

使用one-hot编码的直接结果就是数据变稀疏;

独热编码(one-hot)是什么?什么数据类型需要进行独热编码?pandas如何进行独热编码(one-hot)?

独热编码(one-hot)是什么?什么数据类型需要进行独热编码?pandas如何进行独热编码(one-hot)?

See the source image

独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。

独热编码是将分类变量转换为可提供给机器学习算法更好地进行预测的形式的过程。 一种稀疏向量,其中:一个元素设为 1;所有其他元素均设为 0。 one-hot 编码常用于表示拥有有限个可能值的字符串或标识符。例如,假设某个指定的植物学数据集记录了 15000 个不同的物种,其中每个物种都用独一无二的字符串标识符来表示。在特征工程过程中,您可能需要将这些字符串标识符编码为 one-hot 向量,向量的大小为 15000。

在很多的机器学习任务中,特征并不总是连续值,而有可能是分类值或者我们也常常称为标称值。例如,年龄的老、中、情。例如天气的,阴天、晴天、暴雨、沙尘暴等;

从上面的举例,我们也可以发现离散特征的编码分为两种情况:

  1、离散特征的取值之间没有大小的意义,比如颜色:[红、绿、蓝、青、黑、白、紫、橙],这些分类值或者标称值之间没有任何大小相关的信息,那么就使用one-hot编码;可以使用sklearn中的OneHotEncoder()或者pandas中的

以上是关于one-hot 编码的主要内容,如果未能解决你的问题,请参考以下文章

类别的one-hot编码

为啥要用one-hot编码

机器学习入门-数据预处理-数字映射和one-hot编码 1.LabelEncoder(进行数据自编码) 2.map(进行字典的数字编码映射) 3.OnehotEncoder(进行one-hot编码)

one-hot 编码的多重共线性

机器学习One-Hot编码

one-hot 编码的生成与撤销