使用joblib加载模型时遭遇sklearn模块找不到的报错
问题解决:加载joblib模型时出现sklearn模块找不到的错误
问题原因
你用joblib保存的classifier.pkl是基于scikit-learn(常称sklearn)训练的模型,加载pickle格式的模型时,Python需要找到模型类的原始定义,所以必须在当前环境安装scikit-learn,且版本最好和训练模型时的版本一致。你代码里没导入sklearn,但加载模型的过程会自动依赖它。
解决步骤
- 先确认运行程序的Python环境与pip对应:
运行python --version查看当前使用的Python版本,再运行pip --version,确保两者的版本路径一致,避免包安装到错误环境。 - 安装真正的scikit-learn包:
PyPI上的sklearn是伪包,正确安装命令为:python -m pip install scikit-learn - 匹配训练时的版本(关键):
如果训练模型时用的scikit-learn版本和当前安装的差异较大,容易加载失败。回忆训练时的版本,比如当时用的是0.24.2,就安装对应版本:python -m pip install scikit-learn==0.24.2 - 验证安装是否成功:
运行以下命令,能正常输出版本号即说明安装有效:python -c "import sklearn; print(sklearn.__version__)"
之前尝试未生效的原因
你之前用pip3 install sklearn安装的是伪包,并非真正的scikit-learn;另外如果pip3对应的Python环境和运行程序的环境不一致,包安装后也无法被当前程序调用,因此要用python -m pip确保安装到当前运行的环境中。
内容的提问来源于stack exchange,提问作者user12969777
相关产品推荐
相关产品推荐

