sklearn onehotencoder的具体用法

  统计/机器学习 数据预处理 Python    浏览次数: 286
1

求sklearn onehotencoder的具体用法,最好能有小例子,如何把pandas中有字符的一列做onehotencoding。

非常感谢!

 

offer雨   2018-09-11 11:12



   2个回答 
7

要先把文本转码成整数,然后再做独热。

我写了个函数

from sklearn.preprocessing import LabelEncoder, OneHotEncoder

def LabelOneHotEncoder(data, categorical_features):
    d_num = np.array([])
    for f in data.columns:
        if f in categorical_features:
            le, ohe = LabelEncoder(), OneHotEncoder()
            data[f] = le.fit_transform(data[f])
            if len(d_num) == 0:
                d_num = np.array(ohe.fit_transform(data[[f]]))
            else:
                d_num = np.hstack((d_num, ohe.fit_transform(data[[f]]).A))
        else:
            if len(d_num) == 0:
                d_num = np.array(data[[f]])
            else:
                d_num = np.hstack((d_num, data[[f]]))
    return d_num

比如有个df,f2和f3这两列是字符,要对它们做独热处理

上面那个函数的使用方法如下

>>> LabelOneHotEncoder(df, ['f2', 'f3'])
array([[ 0.,  1.,  0.,  0.,  0.,  1.,  0.,  0.],
       [ 1.,  0.,  1.,  0.,  0.,  1.,  0.,  0.],
       [ 2.,  0.,  0.,  1.,  0.,  1.,  0.,  0.],
       [ 3.,  0.,  0.,  0.,  1.,  0.,  1.,  0.],
       [ 4.,  1.,  0.,  0.,  0.,  0.,  1.,  0.],
       [ 5.,  0.,  1.,  0.,  0.,  0.,  1.,  0.],
       [ 6.,  0.,  0.,  1.,  0.,  0.,  0.,  1.],
       [ 7.,  0.,  0.,  0.,  1.,  0.,  0.,  1.]])


SofaSofa数据科学社区 DS面经 问答 实战

abuu   2018-10-13 00:53

5

不知道算不算答非所问,pandas中的get_dummies方法可以更加方便地实现独热编码


df = pd.DataFrame([['green', 10.1],
                   ['red',   13.5],
                   ['blue',  15.3]], columns=['color', 'price'])



get_dummies 只对字符串列进行转换,数值列保持不变

pd.get_dummies(df)

pd.get_dummies(df).as_matrix()


如果要用sklearn的OneHotEncoder,要配合LabelEncoder

from sklearn.preprocessing import OneHotEncoder, LabelEncoder

le = LabelEncoder()
ohe = OneHotEncoder(categorical_features=[0]) # 转换第一列

df['color'] = le.fit_transform(df['color'])
ohe.fit_transform(df.values).toarray()


SofaSofa数据科学社区 DS面经 问答 实战

xfyx   2018-10-19 17:29



  相关主题

sklearn OneHotEncoder string类型报错   2回答

sklearn训练classifier的时候报错Unknown label type   1回答

sklearn的模型如何保存下来?   2回答

查看sklearn版本   1回答

python sklearn模型中random_state参数的意义   2回答

sklearn中的predict_proba方法的返回值的意义   2回答

sklearn里learning_rate什么意思?   2回答

sklearn SGDClassifier的partial_fit是什么意思?   2回答

lightgbm.LGBMModel和lightgbm.LGBMClassifier该用哪个?   1回答

sklearn.linear_model.SGDClassifier能做小批量学习(mini-batch)吗?   2回答

sklearn里的LabelEncoder什么用?   3回答

sklearn实现adaboost算法了吗?   1回答



回答问题时需要注意什么?

我们谢绝在回答前讲“生动”的故事。

我们谢绝“这么简单,你自己想”、“书上有的,你认真看”这类的回答;如果你认为对方的提问方式或者内容不妥,你可以直接忽略该问题,不用进行任何作答,甚至可以对该问题投反对票。

我们谢绝答非所问。

我们谢绝自己不会、硬要回答。

我们感激每一个用户在编写答案时的努力与付出!