sklearn版本一致仍出现ColumnTransformer属性缺失错误求助
问题描述
今日之前所有运行均正常,执行以下代码加载模型并调用predict时出现错误:
model_loaded = joblib.load(path + model) print(model_loaded.__getstate__()['_sklearn_version']) res = model_loaded.predict(binance)
执行输出:
1.2.1
479 for _, name, transform in self._iter(with_final=False):
--> 480 Xt = transform.transform(Xt)
AttributeError: 'ColumnTransformer' object has no attribute '_name_to_fitted_passthrough'
本地sklearn版本验证代码:
print('The scikit-learn version is {}.'.format(sklearn.__version__))
输出:
The scikit-learn version is 1.2.1.
本地sklearn版本与模型保存时版本一致,但仍出现属性缺失错误。
解决方法
核对完整版本号:
主版本一致不代表小补丁版本完全匹配,执行pip show scikit-learn查看完整版本信息,确保和保存模型时的环境完全一致。若有差异,安装对应精确版本:pip install scikit-learn==1.2.1 # 若补丁版本不同,替换为具体如1.2.1.post1重新训练并保存模型:
如果有训练代码,用当前本地环境重新训练模型并保存,替换旧模型文件。这能彻底规避序列化时的环境细微差异问题。临时手动补全属性:
加载模型后,手动为ColumnTransformer组件添加缺失属性。比如模型是Pipeline结构,包含名为preprocessor的预处理步骤:preprocessor = model_loaded.named_steps['preprocessor'] preprocessor._name_to_fitted_passthrough = {}完成后再调用
predict,但这仅作临时修复,优先推荐前两种方案。清理缓存重装依赖:
缓存的旧文件可能导致版本异常,执行以下命令清理后重装:pip uninstall -y scikit-learn pip cache purge pip install scikit-learn==1.2.1
内容的提问来源于stack exchange,提问作者user566657
相关产品推荐
相关产品推荐

