我的数据集里面,有的变量是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只认识数值的?不能处理字符串类型的?
2个回答
可以用pandas的get_dummies
df[feature] = df['country'].astype('category')
df = pandas.get_dummies(df, columns=['country'])
对于字符类型,你需要先做LabelEncoder,把它转成整数类型,然后再用OneHotEncoder
具体代码可以参考我在这个问题里的回答:sklearn onehotencoder的具体用法是什么