TypeError: __init__() got an unexpected keyword argument 'categorical_features'

我的代码:(scikit-learn 0.22.1 python 3.7.4)

在这里插入图片描述

错误如下:

TypeError: __init__() got an unexpected keyword argument 'categorical_features'.

错误提示的意思是函数__init__()得到了一个不期望得到的参数,意思是没有参数’categorical_features’。原来scikit-learn 版本在0.22.1往后,OneHotEncoder没有参数categorical_features。
如果你的scikit-learn 版本在0.22.1往前依然使用参数categorical_features,不会出错,但会有Warning提示(红线),不能指定编码列数,提示你修改为ColumnTransformer,在其参数中可指定。
在这里插入图片描述

改正措施:

引入ColumnTransformer(),将OneHotEncoder这个转换器放在里边,指定要编码的列,[1]表示第二列即国家。性别可直接用LabelEncoder分类。
在这里插入图片描述

ColumnTransformer参数解释[1]

ColumnTransformer(transformers, -->(名称,转换器,列)元组的列表,指定要应用于数据子集的转换器对象。

remainder=‘drop’, -->默认为’drop’,未指定的列将被删除.通过指定
remainder=‘passthrough’,所有未指定的剩余列transformers将自动通过)

sparse_threshold=0.3,–>如果不同变压器的输出包含稀疏矩阵,则如果总密度低于此值,则将它们堆叠为稀疏矩阵。使用sparse_threshold=0总是返回密集。当转换后的输出包含所有密集数据时,堆叠结果将密集,并且将忽略此关键字。
)

Reference

[1]https://scikit-learn.org/stable/modules/generated/sklearn.compose.ColumnTransformer.html#sklearn.compose.ColumnTransformer

发布了2 篇原创文章 · 获赞 2 · 访问量 64

猜你喜欢

转载自blog.csdn.net/qq_44635691/article/details/104374481