Scikit-Learn ColumnTransformer报TypeError: zip argument #1 must support iteration如何解决
报错原因与修复方案
报错原因
- 核心原因是
ColumnTransformer初始化参数格式错误:ColumnTransformer要求第一个入参为由转换器三元组组成的列表,每个三元组的结构为(自定义转换器名称, 转换器实例, 目标列列表)。你当前直接传入了未嵌套列表的二元组,不符合接口要求的迭代结构,导致内部执行zip解析时报错。 - 额外隐藏问题:你定义的
ct_columns中包含Units_Sold_Per_Week列,但构造输入特征X时已经将该列删除作为标签,X_train中不存在该列,就算参数格式修正后也会触发列不存在的报错。
修复方案
首先调整待缩放的列列表,删除已经作为标签移除的Units_Sold_Per_Week,再修正ColumnTransformer的初始化参数:
# 调整待转换列 ct_columns = ['Number_of_Cigarettes', 'Nicotine_Content', 'Tar_Content', 'Price', 'Profits_Per_Week'] # 修正ColumnTransformer初始化逻辑:外层加列表,补充转换器名称字段 ct = ColumnTransformer( [('minmax_scaler', MinMaxScaler(), ct_columns)] )
内容的提问来源于stack exchange,提问作者Jordan Anderson
相关产品推荐
相关产品推荐

