《Python大规模机器学习》— 2.2 ​流化源数据

举报
华章计算机 发表于 2019/06/12 21:36:20 2019/06/12
【摘要】 本节书摘来自华章计算机《Python大规模机器学习》一书中的第2章,第2.2.1节,作者是[荷]巴斯蒂安·贾丁(Bastiaan Sjardin)[意]卢卡·马萨罗(Luca Massaron)[意]阿尔贝托·博斯凯蒂(Alberto Boschetti)王贵财刘春明译。

2.2    流化源数据

当你有一个传输数据的生成过程时,某些数据实际上正在流经你的计算机,你能动态处理或丢弃这些数据,但是除非你将其存储到某个数据存储库中,否则之后无法再访问这些数据。这就像从一条流动的河水中取水一样——河流一直在流动,但你不能同时过滤和处理所有河水。这与一次处理所有数据完全不同,后者更像是把所有的水都放在大坝里(类似于处理内存中的所有数据)。

作为数据流的一个示例,我们可以引用传感器即时产生的数据流,或者更简单地引用Twitter的流水线数据流。一般而言,数据流主要来源如下:

  •  测量温度、压力和湿度的环境传感器

  •  记录位置(纬度/经度)的GPS跟踪传感器

  •  记录图像数据的卫星

  •  监视视频和声音记录

  •  网络流量

但是你通常不会处理真实的数据流,而是会处理存储在存储库或文件中的静态记录。在这种情况下,可根据某些标准重新创建数据流,例如,一次顺序或随机提取单个记录。例如,如果我们的数据包含在TXT或CSV文件中,只需每次获取文件的一行并将其传递给学习算法。

在本章和下一章的示例中,我们将处理存储在本地硬盘上的文件,并会为提取数据流准备相应的Python代码。我们不使用无意义的数据集,但也不会用太多数据进行测试和演示。

2.2.1    处理真实数据集

1987年加州大学欧文分校(UCI)就开始建立UCI机器学习库,这是一个大型数据集库,被机器学习社区用于验证机器学习算法。编写本书时,该存储库大约包含350个来自不同领域和用于不同用途的数据集,从有监督回归和分类到无监督任务等。访问https://Archive.ics.uci.edu/ml可查看可用数据集。

本书选择了部分数据集(如表2-1所示),这些数据集在整本书中非常有用,而对你来说,用一台不寻常但仍可管理2GB内存的计算机处理大量数据非常具有挑战性。

 

表2-1参考数据集

 image.png


 

若要从UCI存储库下载和使用数据集,必须转到该数据集的专用页面,并按照标题“Download:Data Folder”下方的链接进行操作。本书给出部分自动下载数据脚本,可放在你的Python使用目录中,这样会使数据访问更加容易。

下面是给出的部分函数,当从UCI下载任意数据集时,在相应部分调用这些函数即可:

 image.png

下载示例代码

下载代码包的详细步骤如前所述,请看一看。本书代码包也托管在GitHub上,网址是

https://github.com/PacktPublishing/Large-Scale-Machine-Learning-With-Python。

大量书籍和视频目录中的其他代码包可在https://github.com/PacktPublishing/查看!

 

这些函数只是围绕各种包建立的打包器,可以处理诸如tarfile、zipfile和gzip之类的压缩数据。文件使用urllib2模块打开,这将生成远程系统句柄,并允许从IO模块(专门用于流处理的模块,参见https://docs.Python.org/2/library/io.html)连续传输数据并以字符串形式(StringIO)或二进制形式(BytesIO)存储到内存。之后,可以用专门的函数像处理文件一样访问这些数据。

这4个函数能轻松帮助你快速下载数据集,无论数据被压缩、粘贴、解压,或者仅仅是矩阵形式的纯文本,这样有助于避免手工下载和提取操作的麻烦。


【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。