数据预处理--One Hot Encoding 详解
One Hot Encoding 是将分类变量转换为可以提供给ML算法以在预测中做得更好的形式的过程。
参考资料:
https://hackernoon.com/what-is-one-hot-encoding-why-and-when-do-you-have-to-use-it-e3c6186d008f
假设我们有以下数据集:
分类值表示数据集中条目的数值。例如:如果数据集中有另一家公司,则它将被赋予分类值为4.随着唯一条目数量的增加,分类值也会按比例增加。
当然,我们可以利用 sklearn’s LabelEncoder 把分类值转化为数字。
为什么LabelEncoder标签编码不足以为模型提供训练参数?为什么需要One Hot Encoding ?
标签编码的问题在于它假定分类值越高,类别越好。
对于上面的例子来说:用来分类VW、 Acura、Honda的类别。假设你的模型在内部计算平均值来进行预测,那么我们得到,1 + 3 = 4/2 = 2。这意味着:VW和Honda的平均值是Acura,这样的模型预测会有很多错误,偏差很远。
这就是为什么我们使用一个One Hot Encoding来使类别的“二值化”,并将其作为训练模型的特征。
One HotEncoding独热编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。
例如:
自然状态码为:111,101,010,011,110,101
独热编码为:000001,000010,000100,001000,010000,100000
可以这样理解,对于每一个特征,如果它有m个可能值,那么经过独热编码后,就变成了m个二元特征。并且,这些特征互斥,每次只有一个**。因此,数据会变成稀疏的。
开始的数据集用One Hot Encoding 处理后结果如下: