'''
训练好了模型之后保存到本地,并重新加载模型用于预测的两种方法
'''
# 方法1:pickle
from sklearn import svm
from sklearn import datasets
import pickle
clf = svm.SVC()
iris = datasets.load_iris()
X,y = iris.data, iris.target
clf.fit(X,y)
# 模型的保存
with open('clf.pickle','wb') as f:
pickle.dump(clf,f) #将训练好的模型clf存储在变量f中,且保存到本地
# 模型的重新加载和使用
with open('clf.pickle','rb') as f:
clf_load = pickle.load(f) #将模型存储在变量clf_load中
print(clf_load.predict(X[0:1000])) #调用模型并预测结果
# 方法2:joblib方法
from sklearn import svm
from sklearn import datasets
import joblib
# sklearn.externals.joblib函数是用在0.21及以前的版本中,在最新的版本中,该函数应被弃用改为直接导入joblib
# from sklearn.externals import joblib
clf = svm.SVC()
iris = datasets.load_iris()
X,y = iris.data, iris.target
clf.fit(X,y)
# 保存训练好的clf模型
joblib.dump(clf,'clf.pkl',compress=3)
# 重新加载训练好的clf模型
clf3 = joblib.load('clf.pkl')
print(clf3.predict(X[0:1000])) # 打印预测值
# 相对比而言,joblib更高效,但32位python和64位python不能无缝连接使用,可以通过如下代码查看本机的情况
import platform
print(platform.architecture())
joblib.dump 函数说明
import joblib
joblib.dump()
是 Python 中的一个函数,主要用于将对象保存到磁盘上的二进制文件中,以便后续加载和使用。它通常用于保存机器学习模型、大型数据集或其他需要长期保存的 Python 对象。
下面是 joblib.dump()
函数的详细解释以及参数的说明:
joblib.dump(value, filename, compress=0, protocol=None, cache_size=None)
-
value
:要保存到磁盘的 Python 对象。这可以是任何 Python 对象,例如模型、数据集、列表、字典等。 -
filename
:要保存对象的文件名(包括路径)。这是一个必需的参数。 -
compress
:用于指定压缩级别的整数。默认值为 0,表示不使用压缩。如果将其设置为 1,则启用轻量级压缩,如果设置为 3,则启用较强的压缩。较高的压缩级别可能会减小文件大小,但可能需要更多的时间来保存和加载文件。 -
protocol
:用于指定协议的整数。默认值为 None,表示使用默认的协议。协议用于确定对象的序列化方式,通常情况下无需指定。 -
cache_size
:用于指定在将对象保存到磁盘之前,是否在内存中缓存对象的最大尺寸。默认值为 None,表示不使用缓存。如果设置为一个整数,它将限制在将对象保存到磁盘之前,可以缓存在内存中的对象大小。这对于处理大型对象时可能会有所帮助。
下面是一个示例,演示如何使用 joblib.dump()
将一个列表保存到磁盘文件中:
import joblib
# 要保存的数据
my_list = [1, 2, 3, 4, 5]
# 将数据保存到文件
filename = 'my_list.pkl'
joblib.dump(my_list, filename)
# 从文件加载数据
loaded_list = joblib.load(filename)
print(loaded_list)
在这个示例中,我们首先将一个列表 my_list
保存到名为 my_list.pkl
的文件中,然后使用 joblib.load()
从文件中加载数据并打印出来。这个过程允许您在不丢失数据的情况下长期保存和恢复 Python 对象。