在使用joblib加载模型之前检查sklearn版本



我按照本指南保存了一个机器学习模型供以后使用。该模型被转储到一台机器中:

from sklearn.externals import joblib
joblib.dump(clf, 'model.pkl')

当我将其joblib.load('model.pkl')另一台机器中加载时,我收到了以下警告:

用户警告:正在尝试从中解脱估计器决策树分类器 使用 0.18.1 版本时的版本为 0.18 之前的版本。这可能会导致 破坏代码或无效结果。使用风险自负。

那么有没有办法知道保存模型的sklearn版本以将其与当前版本进行比较?

在scikit-learn 0.18中添加了腌制估计器的版本控制。从 v0.18 开始,你可以获得用于创建估算器的 scikit-learn 版本,

estimator.__getstate__()['_sklearn_version']

您得到的警告是由估算器的__setstate__方法生成的,该方法在脱洗时自动调用。看起来没有一种直接的方法可以在不从磁盘加载估算器的情况下获取此版本。您可以使用以下方法过滤掉警告:

import warnings
with warnings.catch_warnings():
warnings.simplefilter("ignore", category=UserWarning)
estimator = joblib.load('model.pkl')

对于 0.18 之前的版本,没有这样的机制,但我想你可以,例如,使用not hasattr(estimator, '__getstate')作为测试来检测至少pre-0.18版本。

我有同样的问题,只是重新训练数据集并使用joblib.dump再次保存"model.pkl"文件。这将得到解决。祝你好运!

相关内容

  • 没有找到相关文章

最新更新