《Python大规模机器学习》— 2.2 流化源数据
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参考数据集
若要从UCI存储库下载和使用数据集,必须转到该数据集的专用页面,并按照标题“Download:Data Folder”下方的链接进行操作。本书给出部分自动下载数据脚本,可放在你的Python使用目录中,这样会使数据访问更加容易。
下面是给出的部分函数,当从UCI下载任意数据集时,在相应部分调用这些函数即可:
下载示例代码
下载代码包的详细步骤如前所述,请看一看。本书代码包也托管在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个函数能轻松帮助你快速下载数据集,无论数据被压缩、粘贴、解压,或者仅仅是矩阵形式的纯文本,这样有助于避免手工下载和提取操作的麻烦。
- 点赞
- 收藏
- 关注作者
评论(0)