如何对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
相关产品推荐
相关产品推荐

