什么是独热编码
(资料图片仅供参考)
One-Hot编码,又称为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候只有一位有效。
One-Hot编码是分类变量作为二进制向量的表示。这首先要求将分类值映射到整数值。然后,每个整数值被表示为二进制向量,除了整数的索引之外,它都是零值,它被标记为1。
我们用如下案例来理解独热编码:
性别特征:["男","女"]
祖国特征:["中国","美国,"法国"]
运动特征:["足球","篮球","羽毛球","乒乓球"]
怎么转化成独热码呢?
用独热码来表示就是
男 => 10
女 => 01
祖国特征:["中国","美国,"法国"](这里N=3):
中国 => 100
美国 => 010
法国 => 001
运动特征:["足球","篮球","羽毛球","乒乓球"](这里N=4):
足球 => 1000
篮球 => 0100
羽毛球 => 0010
乒乓球 => 0001
所以,当一个样本为["男","中国","乒乓球"]的时候,完整的特征数字化的结果为:
[1,0,1,0,0,0,0,0,1]
知识点
OneHotEncoder(categories='auto', sparse='True', dtype='float')
参数说明:
1、categories:默认’auto’,根据根据训练数据自动确认类别;默认数组的列表,categories[i]保存第 i 列中预期的类别。传递的类别不应在单个特征中混合字符串和数值,并且应在数值的情况下进行排序。使用的类别可以在categories_属性中找到。
2、sparse:默认为True,如果设置为 True 将返回稀疏矩阵,否则将返回一个数组。
3、dtype:默认为float,所需的输出数据类型。
我们用sklearn的preprocessing进行数据预处理,案例如下: