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

使用sklearn的ColumnTransformer调用OneHotEncoder报不可迭代错误如何解决

报错原因
  • scikit-learn中ColumnTransformer构造方法的第一个transformers参数,必须接收由三元组构成的列表,每个三元组固定格式为(转换器自定义名称、转换器实例、需要处理的列索引/列名)。
  • 错误写法中未将转换器配置打包为元组,程序执行时误将OneHotEncoder实例当作可迭代对象拆分解析配置,因此抛出TypeError: 'OneHotEncoder' object is not iterable异常。
解决方法

将转换器相关的三个配置项用括号包裹为元组即可,修改后的代码如下:

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer 

ct = ColumnTransformer([('Geography', OneHotEncoder(categories='auto'), [1])], remainder='passthrough')
df_ = ct.fit_transform(df.values)

如果需要避免多重共线性问题,也可以在初始化OneHotEncoder时添加drop='first'参数,自动丢弃第一列虚拟变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 10:45:02