前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >降低数据大小的四大绝招。

降低数据大小的四大绝招。

作者头像
炼丹笔记
发布2022-10-27 14:51:37
1.2K0
发布2022-10-27 14:51:37
举报
文章被收录于专栏:炼丹笔记炼丹笔记

↑↑↑关注后"星标"炼丹笔记

炼丹笔记干货

作者:Kaggle竞赛宝典摘自Chris Deotte的分享

降低数据大小的四大绝技

简介

在非常多的问题中,例如商品推荐数据存储(大量的用户和商品,还有购买金额等信息),金融数据存储(大量的标的,价格等),我们不可避免的都会碰到数据过大的问题,如果对这类数据进行处理显得直观重要,本文我们介绍碰到大数据时,我们采用的四种策略。

四大节省内存的方式

01

数据类型转换

通过数据转换往往可以帮助我们节省好几倍的内存,同时因为类型的转换,在一些数值计算中还可以起到加速运算的作用。我们以American Express竞赛为案例:

1. customer_ID从64 bytes降低为4bytes

长度为64的字符串,每行使用64个字节!

  • 我们可以将此转换为仅使用4字节或8字节的int32或int64。典型的技巧如获取十六进制字符串的最后16个字母,然后将该base16数字转换为base10并另存为int64。
2. S_2将10 bytes降低为3 bytes

此列是带时间的日期。由长度为10的字符串提供,每行使用10个字节!

  • 如果我们用pd.datetime进行转化,那么变为4个字节。
  • 或者,我们可以将此列保存为三列,分别为year,month,day,每列为int8,并且每行仅使用3个字节。
3. 类别特征,从8 bytes降低为1 bytes

将一些最大值为8个值的类别列转化为int8的正数,这样就变成了1个byte,将原先8个bytes转化为了1个byte。

4. 数值特征,从8 bytes降低为2 bytes

对于一些将float64转化为float32而不损失信息的字段可以直接转化,还有很多字段可以直接从float64转化为float16,这样就可以转化为2个bytes。

02

选择存储文件形式

通过数值类型转化策略转化之后,我们需要将文件保存到磁盘。而这个时候有两个重要属性:

  • 压缩比;
    • 一些文件格式(如Feather、Parquet和Pickle)会压缩数据。NumPy中的np.savez()也会对数据进行压缩,一般压缩之后数据还会变小很多。
  • 保存顺序;
    • 一些文件格式(如CSV)逐行保存数据。一些文件格式(如Parquet)逐列保存数据。这将影响以后读取数据。如果将来我们想读取行的子集。也许行顺序更好更快。如果将来我们想读取列的子集,那么列顺序可能会更好更快。

03

多文件存储与否

这个对于数据大小影响不大,如果一次处理整个训练和测试数据集有困难,那么我们可以考虑分块处理,并将数据作为单独的文件保存到磁盘。如果可以一起存储处理,则直接单个文件即可。

04

噪音处理

有非常多的数据存在噪音,而这些噪音处理之后对于数据的训练预测有帮助而没什么害处,例如American Express中的一些数据本来是int型,后来加了噪音变成了float型,此处如果稍加处理则可以节省大量的内存。

小结

适用于所有数据存储问题。

参考文献

  1. How To Reduce Data Size
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 炼丹笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. customer_ID从64 bytes降低为4bytes
  • 2. S_2将10 bytes降低为3 bytes
  • 3. 类别特征,从8 bytes降低为1 bytes
  • 4. 数值特征,从8 bytes降低为2 bytes
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档