借助 scikit-learn 的 OneHotEncoder 类实现特征值上的独热编码

  说明:如果要编码的特征值是分类数据,用 LabelEncoder 类直接编码就可以。进行独热编码的数据一般是顺序型数据,这类数据的原始形式一般是字符串。在进行独热编码之前,应先将映射为数值(这在 SPSS 和 R 语言中极易实现)。

示例

1、创建一个示例数据集

import pandas as pd

df = pd.DataFrame([['乔峰', '', 95, '降龙十八掌', '丐帮'],
                   ['虚竹', '', 93, '天上六阳掌', '少林'],
                   ['段誉', '', 92, '六脉神剑', '天龙'],
                   ['王语嫣', '', 95,'熟知武诀', '姑苏'],
                   ['包不同', '', 65, '胡搅蛮缠', '姑苏'],
                   ['康敏', '', 40, '惑夫妒人', '丐帮'],
                   ['丁春秋','', 33, '化功大法','逍遥']],
                   index=list('abcdefg'.upper()),
                   columns=['name', 'gender', 'score', 'skill', 'class'])
df

 

 

2、将 gender 映射为数值

from sklearn.preprocessing import LabelEncoder

X = df[['name', 'gender', 'skill', 'score']].values
class_le = LabelEncoder()
X[:, 1] = class_le.fit_transform(X[:, 1])

X

 

3、对 gender 进行独热编码

from sklearn.preprocessing import OneHotEncoder

ohe = OneHotEncoder(categorical_features=[0])
ohe.fit_transform(X[:,[1]]).toarray()

 

 

posted @ 2019-11-15 18:48  赏尔  阅读(678)  评论(0)    收藏  举报