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

SKLEARN报categorical_features参数错误 如何用ColumnTransformer修复

sklearn OneHotEncoder categorical_features参数报错解决方案

报错原因是scikit-learn 0.22及以上版本正式移除了OneHotEncoder的categorical_features参数,需使用ColumnTransformer按列指定预处理逻辑实现原有功能。

原有代码中存在两处可优化的冗余问题:

  1. 无需提前调用LabelEncoder将分类特征转整数,当前版本OneHotEncoder支持直接处理字符串类型的分类输入
  2. 仅调用fit()方法会返回编码器实例而非编码后的数据,无法直接读取shape属性,需改为调用fit_transform()

修改后的完整代码

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

# 指定需要做独热编码的分类列,可传入多列
categorical_columns = ['house_type']

# 定义列转换器
col_transformer = ColumnTransformer(
    transformers=[
        ('onehot_encoder', 
         OneHotEncoder(sparse_output=False, drop='first'),  # 可根据需求调整编码器参数
         categorical_columns)
    ],
    remainder='passthrough'  # 未指定的其他列直接保留,仅处理目标分类列
)

# 直接传入原始DataFrame做转换
Y = col_transformer.fit_transform(houses_df)

# 输出转换后的数据维度
print(Y.shape)

补充说明

  • 如果不需要保留其他列,也可以直接对house_type列调用OneHotEncoder的fit_transform方法,无需ColumnTransformer,写法如下:
onehot = OneHotEncoder(sparse_output=False)
Y = onehot.fit_transform(houses_df[['house_type']])
  • 若需要查看独热编码后的特征名,可调用col_transformer.get_feature_names_out()获取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 08:24:05