sklearn 用 pickle 或 joblib 保存模型并加载使用

训练了 sklearn 模型后,希望有一种方法可以持久保存模型以备将来使用,而不必重新训练。以下部分为您提供了一个示例,说明如何使用pickle持久化模型。在处理pickle序列化时,我们还将回顾一些安全性和可维护性问题。

使用Python的内置持久性模型pickle可以将模型保存在scikit-learn中:
pickle 保存模型并加载使用


from sklearn import svm
from sklearn import datasets
model_xgb = svm.SVC()
X, y= datasets.load_iris(return_X_y=True)
model_xgb.fit(X, y)

import pickle 

#1.保存成Python支持的文件格式Pickle
#在当前目录下可以看到new_app_model_v1.pickle
with open('new_app_model_v1.pickle','wb') as fw:
	pickle.dump(model_xgb,fw)
#加载svm.pickle
with open('new_app_model_v1.pickle','rb') as fr:
	new_app_model_v1 = pickle.load(fr)

print (new_app_model_v1.predict_proba(X_test[0:1].values))

在scikit-learn的特定情况下,最好使用joblib代替pickle(dump&load),这在内部装有大型numpy数组的对象上效率更高,这与拟合的scikit-learn估计量通常很有效,但只能腌制到磁盘而不是字符串:

joblib 保存模型并加载使用

from sklearn.externals import joblib

# 保存模型
joblib.dump(model_xgb, 'new_app_model_v1.pkl')
print("Model dumped!")

# 把训练集中的列名保存为pkl
model_columns = list(X_train.columns)
joblib.dump(model_columns, 'new_app_model_v1_columns.pkl')
print("Models columns dumped!")

new_app_model_v1 = joblib.load('new_app_model_v1.pkl')  # Load "model.pkl"
print('Model loaded')
new_app_model_v1_columns = joblib.load('new_app_model_v1_columns.pkl')  
# Load "model_columns.pkl"

 print('Model columns loaded')

print (new_app_model_v1.predict_proba(X_test[0:1].values))

你可能感兴趣的:(python,python,sklearn,pickle,python,Python,免费资源,joblib,程序打包,机器学习)