首页 > 解决方案 > OneHotEncoding 方法在 sklearn 中失败

问题描述

我有一个数据框,我现在用 df 表示,我得到一个 ndarray,如下所示

X=df.iloc[:,5:].values

我想将其用于机器学习模型。我需要对 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。

标签: pythonscikit-learnsklearn-pandas

解决方案


如果您只有一列作为分类并希望它是一个热编码的。值得尝试get_dummies()的应该是你所期望的结果。 熊猫文档


推荐阅读