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

使用新版joblib加载旧版保存模型出现KeyError:0的解决方法

解决Joblib版本不兼容导致的KeyError:0问题

问题描述

我安装了最新版本的joblib,但忘记保存模型时使用的joblib版本,使用Python加载该旧版本保存的机器学习模型时出现KeyError:0错误,请问是否有解决办法?

相关代码

import joblib
# Load the saved model
model = joblib.load("/content/drive/MyDrive/dataset/Base Paper dataset results/Classifers/Linear_SVC_classifier.sav")

# Check the version of Joblib used to save the model
print("Joblib version used to save the model:", joblib.__version__)

报错信息

KeyError                                  Traceback (most recent call last)
<ipython-input-117-f85138883bf7> in <cell line: 3>()
      1 import joblib
      2 # Load the saved model
----> 3 model = joblib.load("/content/drive/MyDrive/dataset/Base Paper dataset results/Classifers/Linear_SVC_classifier.sav")
      4 
      5 # Check the version of Joblib used to save the model

2 frames
/usr/local/lib/python3.9/dist-packages/joblib/numpy_pickle.py in load(filename, mmap_mode)
    585                 obj = _unpickle(fobj, filename, mmap_mode)
    586     return obj

/usr/local/lib/python3.9/dist-packages/joblib/numpy_pickle.py in _unpickle(fobj, filename, mmap_mode)
    504         obj = unpickler.load()
    505         if unpickler.compat_mode:
--> 506             warnings.warn("The file '%s' has been generated with a "
    507                           "joblib version less than 0.10. "
    508                           "Please regenerate this pickle file."

/usr/lib/python3.9/pickle.py in load(self)
   1210                     raise EOFError
   1211                 assert isinstance(key, bytes_types)
--> 1212                 dispatch[key[0]](self)
   1213         except _Stop as stopinst:
   1214             return stopinst.value

KeyError: 0

解决办法

  • 降级Joblib到兼容版本:
    从报错提示可知,模型是用joblib 0.10之前的版本保存的。先尝试安装旧版本,比如0.9.0:

    pip install joblib==0.9.0
    

    安装完成后重新运行加载代码,若仍报错,可尝试更早的版本如0.8.4。

  • 尝试用标准库pickle加载:
    Joblib基于pickle开发,部分旧版本joblib保存的模型可直接用pickle读取:

    import pickle
    with open("/content/drive/MyDrive/dataset/Base Paper dataset results/Classifers/Linear_SVC_classifier.sav", 'rb') as f:
        model = pickle.load(f)
    
  • 还原保存模型时的环境:
    若能找到保存模型时的完整Python环境(包括joblib、scikit-learn等依赖的版本),在该环境下加载模型后,用新版本joblib重新保存一次,后续即可用新版本正常加载。

内容的提问来源于stack exchange,提问作者Umer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:25:07