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

使用joblib加载scikit-learn v0.23.1构建的随机森林模型时出现scipy.sparse._csr模块缺失错误

解决joblib加载模型时出现ModuleNotFoundError: No module named 'scipy.sparse._csr'的问题

这个问题我之前也碰到过,大概率是scipy版本不兼容导致的——你保存模型时的scipy版本和现在加载环境里的scipy版本不一致,scipy在后续版本中调整了内部模块的结构,scipy.sparse._csr这个内部模块的路径在新版本里可能已经变更,或者仅在旧版本中存在。

具体解决步骤:

  • 第一步:确认保存模型时的scipy版本
    回到你最初训练并保存模型的环境,运行以下命令查看当时的scipy版本:

    pip show scipy
    

    如果当时有记录requirements.txt文件,直接查看其中的scipy版本号即可。

  • 第二步:在加载环境中安装对应版本的scipy
    在你现在加载模型的Python环境里,安装和保存环境完全一致的scipy版本,比如当时用的是scipy 1.5.4,就执行:

    pip install scipy==1.5.4
    

    注意:scikit-learn v0.23.1对scipy的最低要求是>=0.19.1,所以要确保安装的scipy版本既和保存环境一致,又满足scikit-learn的兼容要求。

  • 第三步:用虚拟环境隔离依赖(长期解决方案)
    为了避免后续再出现类似的版本冲突问题,建议用虚拟环境(比如venv或conda)来隔离每个项目的依赖:

    # 用venv创建虚拟环境
    python3.7 -m venv model_env
    # 激活环境(Linux/macOS)
    source model_env/bin/activate
    # 激活环境(Windows)
    model_env\Scripts\activate
    # 安装指定版本的依赖
    pip install scikit-learn==0.23.1 scipy==你需要的版本 joblib
    

    之后所有和这个模型相关的训练、保存、加载操作都在这个环境中进行。

如果以上步骤还是无法解决问题,可以检查加载环境中的scikit-learn版本是否也是v0.23.1,因为scikit-learn和scipy的兼容性也会影响模型的序列化/反序列化。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 12:37:52