我已关注this guide以保存机器学习模型供以后使用。该模型被倾倒在一台机器上:
from sklearn.externals import joblib
joblib.dump(clf, 'model.pkl')
当我将joblib.load('model.pkl')
加载到另一台机器上时,我收到了这个警告:
UserWarning:尝试从中取消估算DecisionTreeClassifier 使用版本0.18.1时,版本低于0.18。这可能会导致 破坏代码或无效结果。使用风险自负。
那么有没有办法知道保存模型的sklearn版本,以便将其与当前版本进行比较?
答案 0 :(得分:4)
腌制估算器was added in scikit-learn 0.18的版本控制。从v0.18开始,您可以获得用于创建估算器的scikit-learn版本,
estimator.__getstate__()['_sklearn_version']
您获得的警告由估算器的__setstate__
method生成,该估算器会在取消渲染时自动调用。在没有从磁盘加载估算器的情况下,获得此版本的方法并不简单。您可以使用
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
个版本。
答案 1 :(得分:-1)
我遇到同样的问题,只需重新训练数据集并再次使用joblib.dump保存'model.pkl'文件。这将得到解决。祝你好运!