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

如何对DataFrame单列做独热编码?遇OneHotEncoder参数错误求助

问题原因

你遇到的报错是因为新版本scikit-learn(0.22及以后)已经移除了OneHotEncoder的categorical_features参数,而你参考的视频用的是旧版本(0.21及更早)的scikit-learn,所以旧代码在新版本环境里无法运行。

解决方案

下面提供两种可行的实现方式:

方法1:用ColumnTransformer(推荐)

这种方法可以精准指定要编码的列,同时保留其他数值列,是新版本sklearn的标准做法:

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

# 定义列转换器:对索引为1的列做独热编码,其余列原样保留
ct = ColumnTransformer(
    transformers=[
        ('ohe', OneHotEncoder(sparse_output=False), [1])
    ],
    remainder='passthrough'
)

# 执行编码
vehicles_enc = ct.fit_transform(vehicles)

方法2:单独提取目标列编码后拼接

如果只需要对Car_name列编码,再和其他数值列合并:

from sklearn.preprocessing import OneHotEncoder
import numpy as np

# 初始化编码器
ohe = OneHotEncoder(sparse_output=False)
# 提取索引1的列(注意要保持二维数组格式)
car_encoded = ohe.fit_transform(vehicles.iloc[:, [1]])
# 拼接其他数值列和编码后的列
vehicles_enc = np.hstack([vehicles.iloc[:, [0,2,3,4,5,6,7]], car_encoded])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 01:25:59