sklearn OneHotEncoder string类型报错

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

我的数据集里面,有的变量是categorical的,比如国家,所以我需要做One Hot Encoding。

但是用OneHotEncoder会报错。

>>> from sklearn.preprocessing import OneHotEncoder
>>> enc = OneHotEncoder(categorical_features=['a'])
>>> new_df = enc.fit_transform(df)
ValueError: could not convert string to float

这个错误是什么意思?难道sklearn.preprocessing.OneHotEncoder只认识数值的?不能处理字符串类型的?

 

汪王往望   2017-03-29 09:08



   2个回答 
4

可以用pandas的get_dummies

df[feature] = df['country'].astype('category')
df = pandas.get_dummies(df, columns=['country'])


SofaSofa数据科学社区DS面试题库 DS面经

黄前志   2017-03-30 09:38

3

对于字符类型,你需要先做LabelEncoder,把它转成整数类型,然后再用OneHotEncoder

具体代码可以参考我在这个问题里的回答:sklearn onehotencoder的具体用法是什么


SofaSofa数据科学社区DS面试题库 DS面经

abuu   2018-10-13 14:51



  相关讨论

关于sklearn独热的问题,想把两类编成一个独热

sklearn onehotencoder的具体用法

sklearn不能直接处理含文本的类别变量?

python sklearn模型中random_state参数的意义

sklearn模型当中的verbose是什么意思?

sklearn错误ImportError: cannot import name 'joblib'

查看sklearn版本

sklearn中除了sgd以外,还有什么可以使用partial_fit方法吗?

sklearn可以用gpu加速吗?

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

  随便看看

hyperparameter与parameter的区别?

怎么添加pandas的dataframe到已有的csv文件,并且不覆盖原内容

python直方图y轴显示占比,而不是绝对数值

pandas.DataFrame选取最后k行

roc auc小于0.5是什么情况?