sklearn基于pickle / joblib 的模型保存及加载

本文介绍了如何使用Python的pickle模块和scikit-learn的joblib进行模型保存与加载。示例中展示了SVM模型的训练,并通过pickle和joblib将模型保存到磁盘,然后成功加载并进行预测。对于大数据量的模型,推荐使用joblib,因为它在处理大型numpy数组时更高效。

sklearn(scikit-learn)模型持久化有两种方式:

  • Python的内置模块pickle
  • scikit-learn内部的joblib
1. 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)

基于 pickle 实现模型保存及加载:

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))
2. joblib 模型保存及加载

在大量数据的情况下,最好使用scikit-learn的的joblib代替python的pickle(dump&load),这在内部装有大型numpy数组的对象上效率更高。
总结起来,joblib更适合大数据量的模型,不过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))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值