参考博客1 参考博客2
one hot 编码
形式和定义
one hot 编码,其为一位有效编码,主要是采用N位状态寄存器来对N个状态进行编码,每个状态都有独立的寄存器位,并且在任意时候只有一位有效。 这些特征值并不是连续的,而是离散的,无序的。 通常我们需要对其进行特征数字化。
特征数字化
性别特征:[“男”,“女”] 按照N位状态寄存器来对N个状态进行编码的原理,咱们处理后应该是这样的(这里只有两个特征,所以N=2): 男 → 10 女 → 01 国家特征:[“中国”,"美国,“法国”](N=3): 中国 → 100 美国 → 010 法国 → 001 当一个样本为[“男”,“中国”]的时候,完整的特征数字化的结果为: [1,0,1,0,0],其实就是对应,男(01),中国(100)合起来的编码
优点
它是一种数据预处理方式 要的目的是描述无序的数据,避免人为地引入序数,可以理解为大小关系,例如red,green,blue之间就不能比较大小。 解决了分类器不好处理属性数据的问题,在一定程度上也起到了扩充特征的作用。
函数使用
函数解析
pandas. get_dummies(
data,
prefix= None ,
prefix_sep= '_' ,
dummy_na= False ,
columns= None ,
sparse= False ,
drop_first= False ,
dtype= None )
函数实操
import pandas as pd
df = pd. DataFrame( [
[ 'green' , 'A' ] ,
[ 'red' , 'B' ] ,
[ 'blue' , 'A' ] ] )
df. columns = [ 'color' , 'class' ]
'''
color class
0 green A
1 red B
2 blue A
'''
pd. get_dummies( df)
'''
color_blue color_green color_red class_A class_B
0 0 1 0 1 0
1 0 0 1 0 1
2 1 0 0 1 0
'''
df = pd. get_dummies( df, prefix_sep= '/' )
'''
color/blue color/green color/red class/A class/B
0 0 1 0 1 0
1 0 0 1 0 1
2 1 0 0 1 0
'''