python - 有没有办法知道哪个 sklearn 版本用于训练泡菜模型?
问题描述
我得到了一个 pickle 文件,其中包含一个训练有素的梯度提升模型,该模型是由其他人在另一台机器上训练的。我意识到我无法在我的机器上加载这个泡菜文件
with open('gb_model.pickle','rb') as f:
gbmodel = pickle.load(f)
我当前版本的scikit-learn==0.24.2
. 我得到了错误ModuleNotFoundError: No module named 'sklearn.ensemble.gradient_boosting'
。然后我尝试安装其他版本,sklearn
但我不断收到与sklearn
. 我也尝试使用joblib
但得到相同的结果:
from joblib import load
clf = load('gb_model.pickle')
我意识到我需要加载与sklearn
安装时相同版本的腌制文件。我在这里看到可以在加载后检查版本,但似乎我什至无法加载泡菜文件。还有另一种方法吗?我希望最终能够加载腌制模型。根据官方文档,理想情况下应该沿着腌制模型保存元数据,但我没有提供这个,有没有办法单独从腌制文件中获取这个?
解决方案
如果您使用 sklearn 0.18 或更高版本训练模型,请尝试:
import pickle
clf = pickle.load(open('gb_model.pickle', 'rb'))
clf.__getstate__()['_sklearn_version']
但是,实际上没有称为gradient_boosting
inside的模块sklearn.ensemble
,这就是导致问题的原因。最接近的模块是sklearn.ensemble.GradientBoostingClassifier
,或者来自 OpenML 的这个模块(我从未听说过)。
推荐阅读
- javascript - 使用单击的数据 ID 更新隐藏输入的值
- dialogflow-es - 如何使用 python 从 webhook 修改参数的值 - Dialogflow 聊天机器人
- php - $_SESSION 标记内的索引未定义,即使我在登录后立即定义了它
- c# - 404错误但文件/目录在那里
- c# - MVC DropDownList 模型绑定
- ios - Swift 中的 UIView 扩展
- php - 用表格理解方法帖子
- java - 如何在android studio java中检查函数的生命状态
- excel - Excel VBA For then 循环
- excel - 当使用条件格式突出显示单元格时,如何识别/解决 Excel 单元格颜色?