机器学习,如何通过joblib保存模型文件并恢复?
发布于 作者:苏南大叔 来源:程序如此灵动~
在机器学习过程中,对于模型的训练是非常耗时的。那么,可以使用joblib来把函数固化成文件,保存耗时的训练结果。同时,在再次需要使用对应的耗时的函数时候,可以再使用joblib加载恢复对应的函数。从而达到保存耗时函数结果的目的。在机器学习过程中,这个耗时的结果也常常被称之为模型。

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文讲述python的joblib库的故事,使用.dump导出到文件,使用.load从文件恢复函数。本文测试环境:win10,python@3.6.8,joblib@1.1.0,sklearn@0.24.2。
导入joblib库方式一
本文中测试环境的joblib是直接安装的:
pip install joblib可以通过下面的代码,查看joblib的版本号:
import joblib
print(joblib.__version__)导入joblib库方式二
如果你的joblib是从sklearn里面导入的话,那么应该是下面这样的写法:
from sklearn.externals import joblib据网上的资料,joblib还可以来自sklearn。但是,苏南大叔这边的测试环境中,sklearn中并没有joblib,可能是版本问题。测试环境里面得到的错误信息是这样的:
ImportError: cannot import name 'joblib'joblib.dump() 导出到文件
理论上来说,joblib是可以把任何的函数导出为文件的。不过在苏南大叔这边的需求中,只是对机器学习中的使用分类器之后的结果,进行缓存导出到文件的操作。
下面的例子中,还是采用原来的多项式朴素贝叶斯函数做例子。主要操作是在fit()后就需要保存成文件。
mb = MultinomialNB(alpha=1)
mb.fit(X_train, y_train)
# 下面是新加的
joblib.dump(mb,"data/model.model")可以参考链接:

joblib.load() 导入为函数
在第二次使用的时候,就可以直接从缓存的模型文件里面,恢复出相应的函数。
mb = joblib.load('data/model.model')
# 下面是原来的
y_predict = mb.predict(X_test)这里需要特别说明的是,如果使用这个分类器.fit()的结果缓存的话。那么,开始的时候那些用于训练的X_train, y_train,就没有用了。
相关文章
- https://newsn.net/say/sklearn-multinomialnb.html
- https://newsn.net/say/python-count-vectorizer.html
- https://newsn.net/say/jieba-cut.html
- https://newsn.net/say/jieba-lcut.html
综述
joblib可以保存机器学习的训练结果,用于后续的机器学习验证过程。更多机器学习的经验文章,请参考: