如何使用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
相关产品推荐
相关产品推荐

