joblib
joblib是一组在Python中提供轻量级管道的工具,在处理大数据时速度更快、更健壮,并且对numpy数组进行了特定的优化。
所以在保存速度上,较之pickle和dill,joblib速度更快。
import joblib
# 保存模型
def save_model(model, filePath):
# 后缀一般用pkl
joblib.dump(model, filename=filePath)
# 加载模型
def load_model(filePath):
model = joblib.load(filePath)
return model
pickle
pickle基于二进制协议,将Python对象结构进行序列化与反序列化。
dump保存对应序列化picking过程,将Python对象层级结构转换为字节流的过程。
load加载对应unpicking逆运算过程,将字节流转换回对象层级结构的过程。
import pickle
# 保存模型
def save_model(model, filePath):
# 路径需要预先建立好
with open(filePath, 'wb') as f:
pickle.dump(model, f)
# 加载模型
def load_model(filePath):
with open(filePath, 'rb') as f:
model = pickle.load(f)
return model
dill
dill原理与pickle一致,但是区别在于dill可以对自定义的模型进行保存与加载,而pickle不行。
import dill
# 保存模型
def save_model(model, filePath):
# 路径需要预先建立好
with open(filePath, 'wb') as f:
dill.dump(model, f)
# 加载模型
def load_model(filePath):
with open(filePath, 'rb') as f:
model = dill.load(f)
return model