我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

在机器学习过程中,对于模型的训练是非常耗时的。那么,可以使用joblib来把函数固化成文件,保存耗时的训练结果。同时,在再次需要使用对应的耗时的函数时候,可以再使用joblib加载恢复对应的函数。从而达到保存耗时函数结果的目的。在机器学习过程中,这个耗时的结果也常常被称之为模型。

苏南大叔:机器学习,如何通过joblib保存模型文件并恢复? - joblib保存模型文件并恢复
机器学习,如何通过joblib保存模型文件并恢复?(图2-1)

大家好,这里是苏南大叔的程序如此灵动博客,这里记录苏南大叔和计算机代码的故事。本文讲述pythonjoblib库的故事,使用.dump导出到文件,使用.load从文件恢复函数。本文测试环境:win10python@3.6.8joblib@1.1.0sklearn@0.24.2

导入joblib

据网上的资料,joblib还可以来自sklearn。但是,苏南大叔这边的测试环境中,sklearn中并没有joblib,可能是版本问题。本文中测试环境的joblib是直接安装的:

pip install joblib

可以通过下面的代码,查看joblib的版本号:

import joblib
print(joblib.__version__)

如果你的joblib是从sklearn里面导入的话,那么应该是下面这样的写法:

from sklearn.externals import 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保存模型文件并恢复? - joblib导入导出
机器学习,如何通过joblib保存模型文件并恢复?(图2-2)

joblib.load() 导入为函数

在第二次使用的时候,就可以直接从缓存的模型文件里面,恢复出相应的函数。

mb = joblib.load('data/model.model')
# 下面是原来的
y_predict = mb.predict(X_test)

这里需要特别说明的是,如果使用这个分类器.fit()的结果缓存的话。那么,开始的时候那些用于训练的X_train, y_train,就没有用了。

相关文章

综述

joblib可以保存机器学习的训练结果,用于后续的机器学习验证过程。更多机器学习的经验文章,请参考:

助理微信

微信打赏码

微信公众号

微信小程序

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。