关于独热编码与哑变量编码的概念,可以参考:https://blog.csdn.net/qq_41853758/article/details/81252174。
离散特征的编码分为两种情况:
1、离散特征的取值之间没有大小的意义,比如color:[red,blue],此时可以使用one-hot编码;
2、离散特征的取值有大小的意义,比如size:[X,XL,XXL],此时可以使用数值的映射{X:1,XL:2,XXL:3}。
本文主要讨论独热编码的Python实现:
import pandas as pd
df = pd.DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'],'data': range(6)})
df
df结构如下所示:
利用pd.get_dummies()函数对类别性特征df中的key进行独热编码处理:
dummies = pd.get_dummies(df['key'],prefix='key')
dummies
dummies的结构如下:
将经过独热编码处理后的类别特征与其他数值型特征组合起来:
new_df = df[['data']].join(dummies)
new_df
new_df的结构如下所示:
比较df和new_df我们可以看到,经过独热编码处理后,特征集由原来的两维变成了四维。一般情况下独热编码可以结合PCA一起使用,以降低经独热编码处理后的特征集的复杂性。
其他参考:
https://blog.csdn.net/lujiandong1/article/details/52836051
https://blog.csdn.net/wl_ss/article/details/78508367
《Python for Data Analysis》2nd