使用sklearn实现模型持久化
我们在训练模型经常会发现一个问题就是,我们之前训练好的模型,当我们关闭编译器后再重新打开,发现需要重新进行训练,很浪费时间,那有没有什么好的方式可以保存模型呢?就是像Java中将对象序列化的技术呢?肯定是有的。
在Python中,有两个库可以将我们的模型进行持久化保存,分别是pickle和joblib。
1.pickle
我们用代码演示一下:
from sklearn import svm from sklearn import datasets clf = svm.SVC() X, y= datasets.load_iris(return_X_y=True) clf.fit(X, y) import pickle s = pickle.dumps(clf) clf2 = pickle.loads(s) clf2.predict(X[0:1]) array([0])
利用pickle模块,我们可以将训练好的模型变成字节码保存到字符串中,但是你会发现它不能够保存到磁盘,我们有时会需要将训练好的模型存储到磁盘,那有没有什么办法呢?那肯定是有的。下面我们就说一下joblib。
2.joblib
我们用代码操作一下:
from sklearn import svm from sklearn.datasets import load_digits import joblib X,y=load_digits(return_X_y=True) clf=svm.SVC(kernel='linear',C=1) clf.fit(X,y) # 将训练好的模型序列化存储到文件model.pth joblib.dump(clf,'./model.pth') # 加载模型 clf=joblib.load('./model.pth')