Google Colab中OneHotEncoder报categorical_features参数错误如何解决
分类特征编码报错解决方案
报错原因
scikit-learn 0.22及以上版本已正式移除OneHotEncoder的categorical_features参数,你更新相关库后触发报错就是因为新版本不再支持该入参,该参数的功能现已由ColumnTransformer替代。
解决方法
方案1:使用ColumnTransformer重构代码(官方推荐)
当前版本的OneHotEncoder已经支持直接处理字符串类型的分类特征,无需提前调用LabelEncoder做数值转换,你可以直接按如下代码改写逻辑,实现和原代码完全一致的效果:
from sklearn.preprocessing import OneHotEncoder from sklearn.compose import ColumnTransformer # 配置列转换器:对第2、3列做独热编码,其余列保持原样 ct = ColumnTransformer( transformers=[ # drop='first'参数自动丢弃每类独热编码的第一个特征,避免多重共线性,对应你原代码中X = X[:,1:]的操作 ('onehot', OneHotEncoder(drop='first'), [2, 3]) ], remainder='passthrough' ) # 直接传入原始特征矩阵X即可完成编码 X = ct.fit_transform(X)
方案2:降级scikit-learn到旧版本
如果你不想修改原有代码,可在Anaconda提示符中执行如下命令,将scikit-learn降级到支持categorical_features参数的0.21.3版本:
conda install scikit-learn==0.21.3
内容的提问来源于stack exchange,提问作者Swapnil Ghule
相关产品推荐
相关产品推荐

