**Case**——假定已知三个feature,三个feature分别取值如下:
feature1=[“male”, “female”] 表示为[0, 1]
feature2=[“from Europe”, “from US”, “from Asia”] 表示为[0, 1, 2]
feature3=[“uses Firefox”, “uses Chrome”, “uses Safari”, “uses Internet Explorer”] 表示为[0, 1, 2, 3]
假设有下面两组数据:
[“male”, “from US”, “uses Internet Explorer”] is marked为[0, 1, 3]
[“female”, “from Asia”, “uses Chrome”] is marked为[1, 2, 1]
例如:
可以这样理解,对于某个特征有m个取值,转换为独热编码后,就变成了m个二元特征,并且这些特征互斥,每次只有一个激活。
Q:现在将[0, 1, 3]进行独热编码:
A: 则样本中特征变量取值最多的为feature3,所以独热编码应写成4个二元特征,将未取到的特征记为0000;则对于样本中第一个变量feature1,则为[0001,0000];
依此类推,最终独热编码可以表示为:[0001, 0000, 0000, 0010, 0000, 0000, 0000, 0000, 1000]
可以简写为:[1., 0., 0., 1., 0., 0., 0., 0., 1.]
则我们可以用sklearn计算某样本变量的独热编码
from sklearn import preprocessing
enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]) #4个样本
enc.transform([[0, 1, 3]]).toarray()
输出结果:array([[ 1., 0., 0., 1., 0., 0., 0., 0., 1.]])