OneHotEncoder报错:__init__()收到意外关键字参数'sparse_output'
问题描述
运行以下代码时:
from sklearn.preprocessing import OneHotEncoder as ohc enc = ohc(drop='if_binary', sparse_output=False).set_output(transform='pandas')
出现如下错误:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-8-f958840e2f7e> in <module> 1 from sklearn.preprocessing import OneHotEncoder as ohc 2 default = pd.read_csv("default.csv", index_col=[0]) ----> 3 enc = ohc(drop = 'if_binary',sparse_output=False).set_output(transform='pandas') 4 df = enc.fit_transform(default[["student"]]) 5 default_enc = default.assign(student = df['student_Yes']) /usr/local/lib64/python3.6/site-packages/sklearn/utils/validation.py in inner_f(*args, **kwargs) 61 extra_args = len(args) - len(all_args) 62 if extra_args <= 0: ---> 63 return f(*args, **kwargs) 64 65 # extra_args > 0 TypeError: __init__() got an unexpected keyword argument 'sparse_output'
已尝试更新Anaconda和scikit-learn,但问题仍未解决。
解决思路与方案
- 参数名称不匹配:
sparse_output是scikit-learn 1.2.0及以上版本新增的参数,旧版本中对应的参数是sparse。如果你的scikit-learn版本低于1.2.0,把sparse_output=False替换为sparse=False即可。 - 确认实际生效的版本:有时更新Anaconda后,当前环境并未切换到更新后的版本。可以运行以下代码检查当前scikit-learn版本:
如果版本确实低于1.2.0,需要确保在正确的环境中更新:import sklearn print(sklearn.__version__)# 激活目标环境 conda activate your_env_name # 更新scikit-learn到指定版本 conda install scikit-learn>=1.2.0 - 替代方案(若无法升级版本):如果无法升级scikit-learn,可手动将转换后的数组转为DataFrame,替代
set_output(transform='pandas')的功能:from sklearn.preprocessing import OneHotEncoder as ohc import pandas as pd enc = ohc(drop='if_binary', sparse=False) df = enc.fit_transform(default[["student"]]) # 转为DataFrame并设置列名 df = pd.DataFrame(df, columns=enc.get_feature_names_out(), index=default.index) default_enc = default.assign(student=df['student_Yes'])
内容的提问来源于stack exchange,提问作者NDStar14
相关产品推荐
相关产品推荐

