- 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文件
- 常用于保存神经网络模型的数据
- 博主现在很少用上这玩意