You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用OneHotEncoder一次性对多列字符串特征做独热编码

解决方案

OneHotEncoder本身就支持同时传入多列分类特征进行编码,不需要逐列处理,你可以直接选中180~199列后传入编码器即可。

具体实现代码

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# 初始化编码器,sparse_output=False可直接输出数组,无需后续调用toarray()
ohe = OneHotEncoder(sparse_output=False, handle_unknown='ignore')

# 0起始索引下180到199列对应切片为180:200(Python切片左闭右开),直接选中所有需要编码的字符串列
str_cols = X[:, 180:200]

# 一次性完成所有字符串列的拟合与编码
ohe_coded = ohe.fit_transform(str_cols)

补充说明

  • 如果你使用的sklearn版本低于1.2,需要把参数sparse_output替换为sparse
  • 增加handle_unknown='ignore'是为了避免后续预测时遇到训练集未出现的类别报错,不需要可以删除该参数
  • 最终输出的ohe_coded就是所有字符串列独热编码后的结果,行数和原数据集一致,列数为所有字符串列的类别总数

编码结果与原数值列合并方案

如果需要把编码后的特征和原数据集前180列数值特征合并,可以用以下代码实现:

# 提取前180列数值特征
num_cols = X[:, :180]
# 拼接数值列和编码后的分类列
X_processed = np.hstack([num_cols, ohe_coded])

内容的提问来源于stack exchange,提问作者DatZiggyZig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 01:24:05