one_hot(独热码)官方示例的个人理解
官方给的例子
1
2
3
4
5
6
7
8
9
10
11
|
from
sklearn
import
preprocessing
enc
=
preprocessing.OneHotEncoder()
enc.fit([[
0
,
0
,
3
], [
1
,
1
,
0
], [
0
,
2
,
1
], [
1
,
0
,
2
]])
enc.transform([[
0
,
1
,
3
]]).toarray()
>>>
array([[
1.
,
0.
,
0.
,
1.
,
0.
,
0.
,
0.
,
0.
,
1.
]])
|
这里给出了四组原始的特征表达方式
[0, 0, 3],
[1, 1, 0],
[0, 2, 1],
[1, 0, 2]
每个数组的每个位置对应不同类型的特征,显然给出的原始数据中有三大类特征(因为每个数组的长度都为3),例如[0,0,3]的一号特征的值是0,二号特征的值是0,三号的特征的值是3.
编码的过程:
第一步:
把三大类特征分别编码:1号特征(观察只有两种值),所以编码为[10, 01] // 由大到小排列 [1::10, 0:: 01]
2号特征[100,010,001]
3号特征[1000,0100,0010,0001]
第二步:
根据编码好的特征,将给出的[0, 1, 3]转换成one_hot编码 [1,0, 0,1,0, 0,0,0,1] //将特征分别用上面编好码的特征表示