python - 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。
解决方案
如果您只有一列作为分类并希望它是一个热编码的。值得尝试get_dummies()
的应该是你所期望的结果。
熊猫文档
推荐阅读
- python - 我试图将 str 转换为 int,但我仍然无法获得比较所需的数字
- solr - 将 SOLR 6.0 升级到 8.9
- jenkins - 如何触发分支内的Jenkins作业特定文件夹
- sql - MS Access:如何找到所有字段的最大长度?
- flutter - 如何在继续之前等待实际建立 ble 连接
- html - CSS 中完美的矩形 DIV 包装器
- flutter - 在 DateTime.parse() 中允许空字符串
- python - 如何在熊猫数据框列中找到与 O(logn) 中的输入值 x 最接近的 k 个值?
- bash - 读取输入参数并使用 xargs 传递给 sed
- r - seq.int(rx[1L], rx[2L], length.out = nb) 中的 Pheatmap 错误