pickle demo

1. Python之pickle的用法(用于序列化和反序列化数据)

该pickle模块实现了二进制协议,用于对Python对象结构进行序列化和反序列化Pickling是将Python对象层次结构转换为字节流的过程,而 “ unpickling”是逆运算,将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构的过程。

  • 序列化指的是将对象的状态信息转化为可以存储或传输的形式的过程。(简单理解即将数据存储到相应存储过程,如dict存储到json文件中)

  • 常用的四个方法:dump()、load()、dumps()、loads()

  •  dump(): 将数据序列化到文件中

  • load(): 将序列化后的数据读出(反序列化)

  • dumps()和loads()与上述的区别:无需读入文件,实现str和数据类型的转化

import pickle
file = open(fileDir,'w+')#以二进制式打开
myData = [{"key": "value"},[1,2,3,4,5],'str',123]
pickle.dump(myData, file)
import pickle
file = open(fileDir, 'r+')
print(pickle.load(file)) #此处的fileDir是前面dump()的
#打印出来的是[{"key": "value"},[1,2,3,4,5],'str',123]
#type:list

2. 机器学习中的应用

训练写出

       csv_data = pd.read_csv(
            r'mapping.csv',
            header=None)
        Y = list(map(lambda x: float(x), csv_data.iloc[1:, 0]))
        X = list(map(lambda x: float(x), csv_data.iloc[0, 1:]))
        Z = pd.DataFrame(csv_data.iloc[1:, 1:], dtype=float)

        model = interp2d(X, Y, Z) # 其它模型用法类似
        # print(model(10, 500)[0]) # 44.375

        s = pickle.dumps(model)
        with open(r'interp2d.model', 'wb+') as f:  # 注意此处mode是'wb+',表示二进制写入
            f.write(s)

加载预测

        import pickle
        f = open(r'interp2d.model', 'rb')  # 注意此处model是rb
        s = f.read()
        model = pickle.loads(s)
        # 之后就可以使用model了
        print(model(10, 500)[0]) # 44.375

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值