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

如何基于已训练的ColumnTransformer获取单一分类变量的OneHot编码值?

解决方法

有两种可行的方式获取单一类别对应的OneHot编码:

方法1:直接提取内部的OneHotEncoder实例

ColumnTransformer中定义的转换器可以直接取出单独使用,无需传入完整的数据集结构:

# 从ColumnTransformer中获取已拟合的OneHotEncoder
encoder = ct.named_steps['cat']
# 转换单一类别
blue_encoding = encoder.transform([['blue']]).toarray()
print(blue_encoding)
# 输出:[[1. 0. 0.]]

说明:named_steps['cat']对应你定义ColumnTransformer时指定的转换器名称(第一个参数'cat'),取出后可直接用它处理单独的类别特征,无需关注原数据的其他列。

方法2:构造符合要求的完整输入结构

如果不想单独提取编码器,可以构造包含所有特征列的输入(其他列用任意占位值即可,我们只需要编码部分的结果):

# 构造包含3列的输入,其他列用0占位
full_input = [[0, 'blue', 0]]
# 转换后提取编码部分(前3列)
blue_encoding = ct.transform(full_input)[:, :3]
print(blue_encoding)
# 输出:[['1.0' '0.0' '0.0']]

报错原因说明

你调用ct.transform([['red']])时出错,是因为ColumnTransformer拟合时基于3列的数据集,因此transform要求输入必须和原数据集的特征数量一致(3列),哪怕其他列不会被处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:07:08