模型持久化
模型训练是一个耗时又耗资源的操作,一旦模型训练完成后,可以通过持久化操作将训练好的模型保存为文件,需要时再加载到内存。
模型持久化安装
早期版本的Scikit-learn在扩展子模块externals中提供了joblib包用于模型持久化。现在joblib包已经独立为一个第三方模块,因此最新版本的Scikit-learn已经不再包含joblib包。joblib包的安装命令如下。
pip install joblib
Python内置的序列化模块pickle也可以实现模型的持久化,用起来也很简单。不过,pickle模块更适合持久化Python原生的数据结构,其处理NumPy数据的效率明显低于joblib包。下面的代码演示了如何使用joblib包保存和加载学习模型。
>>> import joblib
>>> from sklearn.datasets import load_wine
>>> from sklearn.svm import SVC
>>> X, y = load_wine(return_X_y=True)
>>> svc = SVC()
>>> svc.fit(X, y)
SVC(C=1.0, break_ties=False, cache_size=200, class_weight=None, coef0=0.0,
decision_function_shape='ovr', degree=3, gamma='scale', kernel='rbf',
max_iter=-1, probability=False, random_state=None, shrinking=True,
tol=0.001, verbose=False)
>>> joblib.dump(svc, r'D:\NumPyFamily\svc.m') # 持久化模型
['D:\\NumPyFamily\\svc.m']
>>> svc = joblib.load(r'D:\NumPyFamily\svc.m') # 加载模型