什么是one-hot编码?one-hot编码,又称独热编码、一位有效编码。其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。
对于如下矩阵,手工编码:
[0,0,3],[1,1,0],[0,2,1],[1,0,2]
0,1
0->1,0
1->0,1
0,1,2
0->1,0,0
1->0,1,0
2->0,0,1
0,1,2,3
0->1,0,0,0
1->0,1,0,0
2->0,0,1,0
3->0,0,0,1
那么[0,1,3]=》 1,0,0,1,0,0,0,0,1
下面编程验证一下。
from sklearn import preprocessing
enc = preprocessing.OneHotEncoder() # 创建对象
enc.fit([[0,0,3],[1,1,0],[0,2,1],[1,0,2]]) # 拟合
array = enc.transform([[0,1,3]]).toarray() # 转化
print(array)
[[1. 0. 0. 1. 0. 0. 0. 0. 1.]]