Scikit-learn HuberRegressor调用fit时报AttributeError: 'str'无decode属性问询
错误触发原因
该错误由scikit-learn与scipy版本不兼容导致:
- scipy从1.6.0版本开始,优化器返回的
message字段从原来的bytes类型调整为原生字符串类型,不需要再执行解码操作 - 你当前使用的旧版本scikit-learn没有适配这个改动,仍然对
result.message调用decode("latin1")方法,而字符串类型没有该方法,因此触发AttributeError。
修复方案
你可以任选以下一种方案处理:
- 升级scikit-learn到适配版本
这是最推荐的处理方式,新版本scikit-learn已经官方修复了该适配问题,执行以下命令升级即可:
pip install --upgrade scikit-learn
如果你使用conda管理环境,执行对应命令:
conda update scikit-learn
- 降级scipy到兼容版本
如果你需要保留当前使用的scikit-learn版本,可以将scipy降级到1.5.4及以下版本,该版本的scipy返回的message仍为bytes类型,可适配旧版scikit-learn:
pip install scipy==1.5.4
- 临时手动修复(仅应急使用)
如果无法修改环境依赖版本,可以找到报错路径中的sklearn\utils\optimize.py文件,定位到243行,将代码中的result.message.decode("latin1")修改为result.message,删除解码调用即可临时解决问题。
内容的提问来源于stack exchange,提问作者killua
相关产品推荐
相关产品推荐

