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

加载预训练joblib模型时出现ModuleNotFoundError错误求助

解决ModuleNotFoundError: No module named 'sklearn.ensemble.gradient_boosting'问题

问题原因

scikit-learn 1.0及以上版本移除了sklearn.ensemble.gradient_boosting模块,原模块中的GradientBoostingClassifier、GradientBoostingRegressor等类已直接移至sklearn.ensemble下。你当前使用的scikit-learn 1.3.0属于新版本,但模型是用旧版本scikit-learn保存的,导致加载时找不到旧模块路径。

解决方案

方案1:降级scikit-learn至保存模型时的版本

找到保存该模型时使用的scikit-learn版本(通常是0.24.x或更早),安装对应版本:

pip install scikit-learn==0.24.2

安装完成后重新运行加载代码即可。

方案2:用当前版本scikit-learn重新训练并保存模型

如果有模型训练代码,使用你当前的scikit-learn 1.3.0重新训练模型,再用joblib保存:

from sklearn.ensemble import GradientBoostingRegressor  # 注意导入路径变化
import joblib

# 假设训练代码(根据实际情况调整)
# X_train, y_train = ... 你的训练数据
# clf = GradientBoostingRegressor(...)
# clf.fit(X_train, y_train)

# 保存新模型
joblib.dump(clf, "./model_data/boston_housing_prediction_new.joblib")

之后加载新保存的模型就不会出现模块找不到的问题。

方案3:手动修正模型的模块路径(进阶)

如果无法降级或重新训练,可以通过修改加载时的模块映射来兼容:

import joblib
import sklearn.ensemble

def module_mapper(module_name):
    # 将旧模块路径映射到新路径
    if module_name == "sklearn.ensemble.gradient_boosting":
        return sklearn.ensemble
    return module_name

# 加载模型时指定mapper
clf = joblib.load("./model_data/boston_housing_prediction.joblib", mapper=module_mapper)

注意:此方法可能因新旧版本类的内部实现差异导致模型运行异常,仅作为临时应急方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 19:41:00