机器学习,如何通过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
可以保存机器学习的训练结果,用于后续的机器学习验证过程。更多机器学习的经验文章,请参考:
如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。