Python 基于pickle的 保存和加载训练后的模型

  • pickle允许我们将Python保存为硬盘驱动器上的二进制文件。在pickle我们的对象后,可以结束我们的Python 对话 并在之后将对象在加载到Python中
  • pickle文件可以备份到云盘或者移动盘里或者拿来想给谁给谁
  • 警告!
  • 不要加载你不信任额pickle,防止他人向你的电脑注入危险的数据或者夺取你的密码
  • Pickle的协议特定于Python,因此没有跨语言兼容性

保存和加载一个scikit-learn模型

  • scikit指的是 scipy-toolkits---->science python toolkits 科学Python工具包
  • 我们以一个随机森林模型为例 

  • 加载库和数据 
from sklearn.ensemble import RandomForestClassifier
from sklearn import datasets
from sklearn.externals import joblib

iris = datasets.load_iris()
features = iris.data
target = iris.target
  • 警告
    • 对于0.22版本之后的sklearn,他已经删除了joblib,你需要从pip安装并import  
  •  创建分类树
classifer = RandomForestClassifier()
model = classifer.fit(features,target)
  • 保存
joblib.dump(model,"model.pkl")

  •  重新导入模型
classifier = joblib.load("model.pkl")
  • 评估观察数据
new_observations = [[2.2,2.2,1.1,2.2]]
>>> classifer.predict(new_observations)
array([0])


  • 在模型保存的时候最好加上模型所使用的scikit-learn版本
scikit_version = joblib.__version__
joblib.dump(model,"model_{version}.pkl".format(version=scikit_version))
  • 返回
['model_1.1.0.pkl']

pickle的用法

pickle接口

操作 串行化 反串行化
转换+文件操作 dump() load()
转换 dumps() loads()
  • 警告
  • loads() 和 dumps()处理的是字节流,并不是所有的字节流都可以被解析的

pickle的保存与读取

# -*- coding:utf8 -*-
import pickle

obj = 'write file using binary system'
print(obj)
#wb 写-二进制
f = open("./a.txt",'wb')
pickle.dump(obj,f)
f.close()

#rb 读-二进制
f = open("./a.txt",'rb')
print(pickle.load(f))
f.close()

输出

write file using binary system
write file using binary system

a.txt中的内容

  • 显然是有些不太方便你阅读
  • 但是你又肯定能看出来的
€?       ?write file using binary system?

pkl文件

  • 常用于保存神经网络模型的数据
  • 博主现在很少用上这玩意

猜你喜欢

转载自blog.csdn.net/Chandler_river/article/details/127172075