OneHotEncoding方法在sklearn

时间:2018-05-02 14:16:42

标签: python scikit-learn sklearn-pandas

我有一个数据框,我现在将表示df,我获得了如下的ndarray

X = df.iloc [:,5:]。值

我想用于机器学习模型。我需要对X的第12列进行单热编码。

使用sklearn我首先按如下方式编码:

from sklearn.preprocessing import LabelEncoder,OneHotEncoder
labelencoder_x=LabelEncoder()
df[:,12]=labelencoder_x.fit_transform(df[:,12])

这很好用。

接下来,我按照以下方式尝试单热编码

onehotencoder=OneHotEncoder(categorical_features=[12])
X=onehotencoder.fit_transform(X).toarray()

我收到以下错误

ValueError: Input contains NaN, infinity or a value too large for 
dtype('float64').

有人可以帮助我吗,我是python编程的新手,我很想知道我做了什么以及如何解决它的问题。我尝试通过查看np.nan是否在第12列并且我得到False进行一些调试,我还检查了第12列中每个元素的类型,它是int。

1 个答案:

答案 0 :(得分:1)

如果您只有一列作为分类,并希望它是一个热编码。值得尝试的get_dummies()应该给出你期望的结果。 Pandas Docs