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

sklearn使用ColumnTransformer构建Pipeline时报指定列不存在错误如何解决

错误根源

你对数据集的特征、标签拆分逻辑和预处理逻辑不匹配:
你使用的鸟类骨骼数据集中,type是分类任务的目标标签列,你已经通过y = data1.iloc[:,11:12]将它拆分到了标签集合,输入特征矩阵x中完全不包含type列。但你在ColumnTransformer中错误将type配置为需要编码的输入特征列,程序在x中找不到对应列就触发了报错。

修复步骤

  1. 调整特征、标签拆分逻辑,用列名提取更清晰避免索引错误:
# 输入特征为10个骨骼数值列
x = data1[['huml','humw','ulnal','ulnaw','feml','femw','tibl','tibw','tarl','tarw']]
# 预测标签为type列
y = data1['type']
  1. 删除预处理逻辑中针对type列的分类特征处理配置,type是标签不属于输入特征,不需要参与特征预处理:
numeric_features = ['huml','humw','ulnal','ulnaw','feml','femw','tibl','tibw','tarl','tarw']
numeric_transformer = Pipeline(steps=[
    ('imputer', SimpleImputer(strategy='mean')),
    ('scaler', StandardScaler())
])

preprocessor = ColumnTransformer(
    transformers=[
        ('num', numeric_transformer, numeric_features)
    ]
)
  1. 其余代码保持不变,训练时如果出现标签维度报错,可将y转为一维数组:
pipeline_lr.fit(x_train, y_train.values.ravel())

训练完成后可直接用以下代码验证模型效果:

print("模型测试集准确率:", pipeline_lr.score(x_test, y_test))

内容的提问来源于stack exchange,提问作者Archana Jalaja Surendran

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 21:09:01