【竞赛相关】特征/模型存储的5种方法

共 1901字,需浏览 4分钟

 ·

2021-11-15 10:12

Hello大家好,我是Coggle菌。今天我将继续和大家一起学习竞赛中的各种基础知识点,从基础库使用到具体的比赛案例。

今天将介绍的比赛中存储特征的几种方法,供大家学习和选择。

方法1:csv/txt

存储为csv、text或者json是最为简单的存储格式,阅读和解析起来非常方便。

如果使用Pandas则可以在存储的过程中设置压缩方法,对磁盘比较友好。

  • 场景:通用
  • 数据:表格、文本
  • 文件大小:压缩后较少
  • 读取速度:较慢
compression_opts = dict(method='zip',
                        archive_name='out.csv')  
df.to_csv('out.zip', index=False,
          compression=compression_opts) 

方法2:hdf

HDF(Hierarchical Data File)是能满足各种领域研究需求而研制的一种能高效存储和分发科学数据的新型数据格式。

HDF格式支持分层存储,可以将多个变量同时存在一个HDF文件中,同时在读取速度上也比较快。

  • 场景:通用
  • 数据:表格、文本
  • 文件大小:较大
  • 读取速度:较快
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]},
                  index=['a''b''c'])
df.to_hdf('data.h5', key='df', mode='w')

方法3:npy

如果将特征和数据处理为Numpy格式,则可以考虑存储为Numpy中的npynpz格式。

  • 场景:文件存储
  • 数据:矩阵
  • 文件大小:适中
  • 读取速度:较快

1. npy文件:二进制格式

np.load()np.save()是读写磁盘数组数据的两个重要函数。使用时数组会以未压缩的原始二进制格式保存在扩展名为.npy的文件中。

import numpy as np

arr=np.arange(5)
np.save('test',arr)

print(np.load('test.npy'))
  1. npz文件:压缩文件

使用np.savez()函数可以将多个数组保存到同一个文件中。读取.npz文件时使用np.load()函数,返回的是一个类似于字典的对象,因此可以通过数组名作为关键字对多个数组进行访问。

import numpy as np

a = np.arange(5)
b = np.arange(6)
c = np.arange(7)
np.savez('test', a, b, c_array=c)  # c_array是数组c的命名

data = np.load('test.npz')
print('arr_0 : ', data['arr_0'])
print('arr_1 : ', data['arr_1'])
print('c_array : ', data['c_array'])

方法4:memmap

NumPy实现了一个类似于ndarraymemmap对象,它允许将大文件分成小段进行读写,而不是一次性将整个数组读入内存。

如果需要存储的对象大于内存,则可以选择memmap进行存储。

  • 场景:大文件存储
  • 数据:矩阵
  • 文件大小:较大、特别大
  • 读取速度:适中
newfp = np.memmap(filename, dtype='float32', mode='r', shape=(3,4))
fpc[0,:] = 0

方法5:joblib

类似于pkl存储,joblib.dump可以将任意的Python对象持久化到一个文件中,并使用joblib.load进行读取。

  • 场景:任意
  • 数据:任意
  • 文件大小:适中
  • 读取速度:适中
from joblib import load, dump

X = [[00], [11]]
Y = [10]

dump((X, Y), "data.pkl")
X, Y = load("data.pkl")



往期精彩回顾




站qq群554839127,加入微信群请扫码:
浏览 65
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报