前面介绍了LabelEnconder和OrdanalEncoder,本文介绍OneHotEnconder.如下贴图表示三个类的区别:
再贴一张关于数据类型以及常用的统计量图
sklearn.preprocessing.OneHotEnconder类实现独热编码
(1)观察数据
(2)实现Sex和Embarked两列的独热编码示例
直接生成
from sklearn.preprocessing import OneHotEncoder
X = data.iloc[:, 1:-1]
enc = OneHotEncoder(categories='auto').fit(X)
result = one_hot.transform(X).toarray()
result
# 可以一行表示
# OneHotEncoder(categories='auto').fit_transform(X).toarray()
#依然可以还原
# pd.DataFrame(enc.inverse_transform(result))
查看特征名
enc.get_feature_names() #返回每一个经过哑变量后生成稀疏矩阵列的名字
把result和原来的表合并
newdata = pd.concat([data,pd.DataFrame(result)],axis=1)
newdata.head()
删除原来的两列,并改个列名
newdata.drop(["Sex","Embarked"],axis=1,inplace=True)
newdata.columns = ["Age","Survived","Female","Male","Embarked_C","Embarked_Q","Embarked_S"]
newdata.head()
使用pandas完成独热编码
更简单的完成
pd.get_dummies(data['Sex'])
之后按上面的方法合并就好了。