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

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:
---&gt; 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版本:
    import sklearn
    print(sklearn.__version__)
    
    如果版本确实低于1.2.0,需要确保在正确的环境中更新:
    # 激活目标环境
    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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 12:48:25