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

使用ColumnTransformer仅标准化数值特征时报错原因求解

报错含义

这个报错的核心意思是:通过字符串列名指定需要处理的列,仅支持输入为pandas DataFrame类型的场景,你当前传入ColumnTransformer的是numpy数组类型的数据,numpy数组没有columns属性,无法匹配你写的列名字符串,因此触发报错。

错误原因

你在定义特征X的时候,末尾加了.values,这个操作会直接把pandas DataFrame转换成numpy ndarray格式,后续拆分得到的X_train、X_test也都是numpy数组类型,自然无法支持按列名字符串筛选列的操作。

修复方案

有两种常用修复方式:

  • 方式一:保留DataFrame格式,定义X的时候去掉末尾的.values即可
    # 去掉.values,X保持DataFrame格式
    X=concat_df[[ 'satisfaction_level', 'last_evaluation', 'number_project', 'average_monthly_hours', 'time_spent_company', 'work_accident', 'promotion_last_5years', ('IT',), ('RandD',), ('accounting',), ('hr',), ('management',), ('marketing',), ('product_mng',), ('sales',), ('support',), ('technical',), 'oe_salary', 'eval_spent']]
    y=concat_df["left"].values
    
    后续拆分得到的X_train、X_test都是DataFrame,原有ColumnTransformer代码不需要修改即可正常运行。
  • 方式二:如果需要保持numpy数组格式,把需要标准化的列换成对应的列索引即可
    先数清楚需要标准化的6个列在X的特征列表中的位置索引,比如satisfaction_level是第0位,last_evaluation是第1位,以此类推,将Cols修改为对应索引的列表:
    # 示例索引,你可以根据自己的特征顺序核对调整
    Cols = [0,1,2,3,4,18]
    
    用数值索引指定列的方式对numpy数组也生效,不需要修改其他代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:24:04