one-hot encoding

2018-06-24  本文已影响0人  专注吃喝五十年

    one-hot encoding与哑变量均用于将定性特征转为定量特征。注:无序列要求的定量,若有序,考虑用map。

    one-hot encoding与哑变量的区别在于one-hot比哑变量的特征位多一位,即哑变量是精简版的one-hot,即在线性回归中用截距项来表示最后一维,但由于最初很难分辨特征的主次关系,且机器学习中多数情况为非线性回归,所以哑变量不太适用(蒙的,有待考证,回头纠正)。

one-hot使用不同寄存器位表征不同的编码,如0,1,2,需要至少三位寄存器,编码为100,010,001,编码方式简单粗暴。

网上对于one-hot举例通常使用

起初看到这个结论的时候我是拒绝的,以我一米二的智商高度,没太明白这个答案是怎么整出来的

后来想想发现one-hot的编码方式是和fit的特征矩阵有关,即想得出[0,1,3]的结果,需要将0放入第一维中去取其编码,1放入第二维,类推

过程如下:

one-hot encoding

如果求[0,1,4]则会报错,因为整个特征矩阵中没有4这个特征值。

若将数据改为

可以看出最后一个2取的是000,不是编码值,但不会报错。

注:sklearn下的OneHotEncoder不会将object类型转数值进行处理,而pandas的get_dummies会先将object类型转数值型,但get_dummies转完后是uint8型,如若下步进行运算可能会导致溢出,需先转为浮点型。

上一篇下一篇

猜你喜欢

热点阅读