《数据科学与分析:Python语言实现》 —1.3 数据科学工具
1.3 数据科学工具
通过新组建的数据科学团队以及团队中高素质的数据科学家和分析师,我们能够及时了解和分析数据科学领域的最新发展,并能够从数据中提取可行的见解。
但是,我们不仅需要灵活、敏捷和专业,还需要拥有合适的工具和基础架构,以使团队能够实现符合团队赞助商期望的目标。为此,在帮助团队确定所需的工具以及其他要点时,需要考虑许多因素,例如:
托管和操纵数据的法规和安全要求。
数据源的位置以及相关的问题,例如我们是否需要立即访问它们,还是成批地将它们上传。
查询的响应能力要求,例如实时或定时报告。
要运行的查询/搜索量。
数据源格式。
数据质量。
对于要求其数据位于特定管辖范围且不打算创建自己的云服务的企业而言,上述安全考虑通常是一个大问题。例如,到目前为止,谷歌并不能保证全部数据都留在欧洲。
数据科学和分析都是关于数据、统计分析和建模的。因此,拥有能够实现这些功能的技术非常重要。数据仓库、ETL软件、统计、建模和数据挖掘工具都是必需的。同样,需要有适当的硬件和网络环境支撑(甚至可能在云端搭建)。
分析领域中使用的技术在过去几年发展迅速,并且出现了许多开源项目,也提供了大量支持,例如:
数据框架:MapReduce、BigQuery、Hadoop、Spark。Hadoop可能是处理数据时部署最广泛(但有时未充分利用)的框架。Hadoop是谷歌的MapReduce编程模型的一种开源实现。其他的技术旨在处理流数据,例如S4和Storm。BigQuery(由谷歌提供)是一种Web服务,可以对大量数据集进行交互式分析,并可与MapReduce结合使用。Hadoop的企业版可以从HortonWorks等供应商处获得。Spark框架最近也受到一些大数据使用者的青睐。
流数据收集框架:Kafka、Flume、Scribe。这些模型之间可能有所不同,但是目的相似——从多个源收集数据,聚合数据并将其输出到数据库、系统(如Hadoop)或者其他客户端以供分析。
工作调度:Azkaban和Oozie管理和协调复杂的数据流。
大数据查询语言:Pig和Hive是用于查询大型非关系数据库的语言。在MapReduce和Hadoop等大数据框架中配合使用这类查询语言,能够提供更好的用户体验。Hive与SQL非常相似。Pig是一种面向数据的脚本语言。
数据存储:Voldemort、Cassandra、Neo4j和HBase,这些是专为在巨型数据集上获得良好性能而设计的数据存储项目。
开源工具
开源工具中的源代码模型已经改变了在小型和大型企业中部署的环境。各种项目的协作性质提供了难以攻破的知识壁垒和质量保证。开源领域中丰富而广泛的工具为数据科学的扩展做出了贡献。它们包括处理大型数据集和数据可视化的工具及原型设计工具:
Python:数据操作、原型设计、脚本编写,这也是本书的重点。
Apache Hadoop:处理大数据的框架。
Apache Mahout:用于Hadoop的可扩展机器学习算法。
Spark:用于数据分析的集群计算框架。
R统计计算项目:数据处理和图形。
Julia:高性能技术计算。
GitHub、Subversion:软件和模型管理工具。
Ruby、Perl、OpenRefine:原型和生产环境脚本语言。
如上所述,Hadoop在处理海量数据集方面正迅速变得无处不在,该框架可扩展用于分布式数据处理。但正如1.1节中所述,在我看来,并非所有的数据科学问题都需要用到大数据处理。Hadoop“热”已经导致许多企业部署了MapReduce系统,这些系统可以有效地用于转储数据,但也导致了人们缺乏对信息管理战略计划的全面了解,也不了解数据分析环境的相关部分是如何组合在一起的。
R被视为统计计算的编程语言。它的特点并非在于代码的优美整洁,而在于输出结果很棒。 在R存储库(CRAN)中有各类包,非常灵活且易于扩展。
Python等脚本语言的使用为应用程序开发和部署提供了专业平台,非常适合用于原型设计和测试新的想法,而且它支持各种数据存储和通信格式,如XML和JSON。除此之外还有大量用于科学计算和机器学习的开源库可供选择。
Python有许多非常有用的库,如SciPy、NumPy和Scikit-learn。SciPy将Python扩展到科学编程领域。它支持各种功能,包括并行编程工具、集成、常微分方程求解器,甚至在代码中支持C/C++代码的扩展。Scikit-learn是基于Python的机器学习包,包括许多用于监督学习(支持向量机、朴素贝叶斯)、无监督学习(聚类算法)的算法和其他用于数据集操作的算法。基于以上原因,我们将在本书的剩余部分使用Python进行演示。
- 点赞
- 收藏
- 关注作者
评论(0)