企业数据的数量和复杂性正不断增加,同时,数据在企业决策和战略规划中发挥核心作用,这推动着企业投资于人员、流程和技术,以帮助他们了解其数据资产并从中获得见解。这包括数据科学应用程序中常用的各种工具。
市场研究公司IDC估计,在2020年,超过64 ZB的数据(相当于640亿TB)被创建、捕获、复制和使用,这是由于受疫情影响,更多的远程工作和在线流媒体加速数据使用。但是,数据分析举措也发挥重要作用。在2020年5月IDC公司最初预测59 ZB时,该公司Global DataSphere预测高级副总裁David Reinsel说,持续的数据增长“更多地是由我们所使用和分析的数据推动,而不是我们创建的数据。”
当建立支持技术的产品组合时,数据科学团队可以从多种工具和平台中进行选择。下面是15种顶级数据科学工具,这些工具可能会在分析过程中为你提供帮助,这些工具按字母顺序排列,我们会详细说明它们的功能和特点-以及潜在的局限性。
1. Apache Spark
Apache Spark是开源数据处理和分析引擎,可以处理大量数据-超过几PB。自2009年创建以来,Spark迅速处理数据的能力推动该平台的快速发展,从而使Spark项目成为大数据技术中最大的开源社区之一。
由于速度快,Spark非常适合连续智能应用程序–以近实时处理流数据为动力。但是,作为通用分布式处理引擎,Spark同样适用于提取、转换和加载用途以及其他SQL批处理作业。实际上,Spark最初被吹捧为MapReduce引擎的更快替代品,用于Hadoop集群中批处理。
Spark仍经常与Hadoop一起使用,但也可以独立运行,用于其他文件系统和数据存储。它具有广泛的开发人员库和API,包括机器学习库和对关键编程语言的支持,使数据科学家可以更轻松地将该平台快速投入使用。
2. D3.js
D3.js是另一个开源工具,它是一个JavaScript库,用于在Web浏览器中创建自定义数据可视化。通常称为D3,这代表Data-Driven Documents(数据驱动文档),它使用Web标准(例如HTML、可缩放矢量图形和CSS),而不是自己的图形词汇。D3的开发人员将其描述为一种动态且灵活的工具,只需最少的工作即可生成数据的可视化表示。
D3.js使可视化设计人员可以通过Document Object Model将数据绑定到文档,然后使用DOM操作方法对文档进行数据驱动的转换。它于2011年首次发布,可用于设计各种类型的数据可视化,并支持交互、动画、注释和定量分析等功能。
但是,D3包含30多个模块和1,000种可视化方法,使学习变得复杂。此外,很多数据科学家没有JavaScript技能。因此,他们可能更喜欢Tableau等商业可视化工具,这使得D3的主要用户是数据可视化开发人员和专家(也属于数据科学团队的成员)。
3. IBM SPSS
IBM SPSS是用于管理和分析复杂统计数据的软件系列。它包括两个主要产品:SPSS Statistics–统计分析、数据可视化和报告工具,以及SPSS Modeler–具有拖放式UI和机器学习功能的数据科学和预测分析平台。
SPSS Statistics涵盖分析过程的每个步骤,从计划到模型部署,并使用户能够阐明变量之间的关系、创建数据点集群、识别趋势并进行预测以及其他功能。它可以访问常见的结构化数据类型,并提供菜单驱动的UI,其自身的命令语法以及可集成R和Python扩展,还有用于自动化流程和导入/导出关系到SPSS Modeler的功能。
该软件由SPSS Inc.于1968年创建,最初的名称是Social Sciences for Social Sciences,该统计分析软件于2009年被IBM收购,以及SPSS先前收购的预测建模平台。虽然该产品系列正式称为IBM SPSS,但该软件通常仍简称为SPSS。
4. Julia
Julia是一种开源的编程语言,用于数值计算,以及机器学习和其他类型的数据科学应用程序。在2012年发布Julia的博客文章中,它的四位创建者表示他们在设计一种能够满足其所有需求的语言。这里的重要的目标是,避免用一种语言编写程序,然后要将其转换为另一种语言来执行。
为此,Julia结合高级动态语言的便利性以及可与静态类型语言(例如C和Java)媲美的性能。用户不必在程序中定义数据类型,尽管他们可以选择这样做。在运行时使用多调度方法也有助于提高执行速度。
Julia 1.0于2018年投入使用,这距离该语言的发布已经过去九年。最新版本是1.6,于2021年3月发布。Julia的文档指出,由于其编译器不同于数据科学语言(例如Python和R)中的解释器,因此新用户“一开始可能会发现Julia的性能不直观”。但是,它声称:“一旦你了解Julia的工作原理,你会发现很容易编写代码,就像C语言那样快。”
5. Jupyter Notebook
数学家、研究人员和其他用户之间的交互式协作。它是一种计算笔记本工具,可用于创建、编辑和共享代码以及说明性文本、图像和其他信息。例如,Jupyter用户可以将软件代码、计算、注释、数据可视化以及计算结果的富媒体表示形式添加到单个文档(被称为notebook)中,然后可以与同事共享并进行修改。
因此,根据Jupyter Notebook的文档介绍,notebook“可以充当数据科学团队成员之间互动会话的完整计算记录”。notebook文档是具有版本控制功能的JSON文件。此外,Notebook Viewer服务使它们可以呈现为静态网页,以供未在系统上安装Jupyter的用户查看。
Jupyter Notebook的起源是Python编程语言-它最初是IPython交互式工具包开源项目的一部分,然后在2014年被拆分。除支持这三种语言外,Jupyter还为其他数十种语言提供模块化内核。
6. Keras
Keras是编程接口,使数据科学家可以更轻松地访问和使用TensorFlow机器学习平台。这是用Python编写的开源深度学习API和框架,可在TensorFlow上运行,现已集成到该平台中。Keras之前支持多个后端,但从2020年6月的2.4.0版本开始,它仅与TensorFlow绑定。
作为高级API,Keras被设计为驱动简单快速的实验,与其他深度学习选项相比,其所需的编码更少。正如Keras文档所说,其目标是通过具有“高迭代速度”的开发过程来加速机器学习模型(特别是深度学习神经网络)的部署。
Keras框架包括序列接口,用于创建带有输入和输出的相对简单的线性层堆栈,以及功能性API–用于构建更复杂的层图或从头开始编写深度学习模型。Keras模型可以在CPU或GPU上运行,并可以跨多个平台进行部署,包括Web浏览器以及Android和iOS移动设备。
7. Matlab
自1984年以来,Matlab由软件供应商MathWorks开发和销售,它是高级编程语言和分析环境,用于数字计算、数学建模和数据可视化。传统工程师和科学家通常用它来分析数据、设计算法并开发嵌入式系统–用于无线通信、工业控制、信号处理和其他应用,通常与Simulink工具配合使用,该工具提供基于模型的设计和仿真功能。
尽管Matlab在数据科学应用程序中没有像Python、R和Julia等语言广泛使用,但它确实支持机器学习和深度学习、预测建模、大数据分析、计算机视觉以及数据科学家所做的其他工作。该平台内置的数据类型和高级功能旨在加快分析应用程序中的探索性数据分析和数据准备。
Matlab被认为相对容易学习和使用,它的全称是matrix laboratory(矩阵实验室),它既包含预构建的应用程序,又使用户能够构建自己的应用程序。它还具有附加工具箱库(包含特定学科软件),以及数百种内置功能,其中包括以2D和3D图形形式可视化数据的功能。
8. Matplotlib
Matplotlib是开放源Python绘图库,用于在分析应用程序中读取、输入和可视化数据。数据科学家和其他用户可以使用Matplotlib创建静态、动画和交互式数据可视化,在Python脚本、Python和IPython Shell、Jupyter Notebook、Web应用程序服务器和各种GUI工具包中使用它。
该库的大型代码库可能难以掌握,但是它是以层级结构构建,旨在使用户能够构建可视化文件–主要使用高级命令。该层级结构中最重要的组件是pyplot,这是提供“状态机环境”的模块,并且提供一组简单绘图功能,类似于Matlab中的功能。
Matplotlib于2003年首次发布,它还包含面向对象的接口,可以与pyplot一起使用或单独使用。它支持低级命令,用于更复杂数据绘制。该库主要专注于创建2D可视化,但提供具有3D绘图功能的附加工具包。
9. Python
Python是数据科学和机器学习领域最广泛使用的编程语言,并且是最受欢迎的语言之一。 Python开源项目的网站将其描述为“一种具有动态语义的解释性、面向对象的高级编程语言”,以及内置数据结构以及动态类型和绑定功能。该网站还吹捧Python的简单语法,称它易于学习,并且它对可读性的强调可降低程序维护的成本。
多功能语言可用于多种任务,包括数据分析、数据可视化、AI、自然语言处理和机器人过程自动化。开发人员也可以使用Python创建Web、移动和桌面应用程序。除面向对象的编程外,它还支持流程、函数和其他类型,以及用C或C ++编写的扩展。
不仅数据科学家,程序员和网络工程师使用Python,而且计算专业人士(从会计师到数学家和科学家)也在使用Python,他们常常被它的用户友好特性所吸引。Python 2.x和3.x都是该语言的生产就绪版本,尽管对2.x系列的支持已于2020年终止。
10. PyTorch
PyTorch是开源框架,用于构建和训练基于神经网络的深度学习模型,PyTorch的拥护者称其支持快速灵活的实验以及向生产部署的无缝过渡。Python库被设计为比Torch更易于使用,Torch是基于Lua编程语言的前身机器学习框架。根据其创建者的说法,PyTorch还提供比Torch更高的灵活性和速度。
PyTorch于2017年首次公开发布,它使用类似数组的张量对模型的输入、输出和参数进行编码。它的张量类似于NumPy支持的多维数组,这是另一个用于科学计算的Python库,但是PyTorch添加内置支持以在GPU上运行模型。NumPy数组可转换为张量以在PyTorch中进行处理,反之亦然。
该库包含各种功能和技术,其中包括称为torch.autograd的自动差异包和用于构建神经网络的模块,以及用于部署PyTorch模型的TorchServe工具,还有对iOS和Android设备的部署支持。除主要的Python API外,PyTorch还提供一种C ++,可用作单独的前端接口或创建对Python应用程序的扩展。
11. R
R编程语言是开源代码环境,旨在用于统计计算和图形应用程序,以及数据处理、分析和可视化。很多数据科学家、学术研究人员和统计学家都使用R来检索、清理、分析和呈现数据,使其成为数据科学和高级分析中最受欢迎的语言之一。
该开源项目得到R基金会的支持,并且提供数以千计的用户创建的程序包,这些程序包具有代码库可增强R功能-例如,ggplot2,这是用于创建图形的知名程序包,它是基于R的数据科学工具tidyverse的一部分。此外,多家供应商为R提供集成开发环境和商业代码库。
R是一种解释型语言,类似于Python,并且以相对直观而著称。它是在1990年代创建,它是S的替代版本,S是1970年代开发的一种统计编程语言;R是其两个创作者名字的首字母。
12. SAS
SAS是用于统计分析、高级分析、BI和数据管理的集成软件套件。该平台由软件供应商SAS Institute Inc.开发和销售,它使用户可以集成、清理、准备和处理数据,然后可以使用不同的统计和数据科学技术对数据进行分析。SAS可用于各种任务,从基本的BI和数据可视化到风险管理、运营分析、数据挖掘、预测分析和机器学习。
在1966年北卡罗来纳州立大学开始开发SAS。1970年代初期,人们对该技术的使用开始增加,并且SAS Institute于1976年成立,作为一家独立公司。该软件最初是供统计人员使用-SAS全称是Statistics Analysis System(统计分析系统)。但是,随着时间的流逝,它被扩展到包括广泛的功能,并成为商业企业和学术界中使用最广泛的分析套件之一。
现在开发和营销工作主要集中在SAS Viya,SAS Viya是该平台的基于云的版本,于2016年启动,并在2020年进行重新设计成为云原生。
13. scikit-learn
Scikit-learn是针对Python的开源机器学习库,它基于SciPy和NumPy科学计算库以及Matplotlib来绘制数据。它支持有监督的和无监督的机器学习,并包括很多算法和模型,在scikit-learn术语中称为估计器。此外,它提供功能用于模型拟合、选择和评估以及数据预处理和转换。
该库最初被称为scikits.learn,在2007年作为Google Summer of Code项目开始,并于2010年首次公开发布。其名称的第一部分是SciPy工具箱的缩写,它也被其他SciPy附加组件使用。Scikit-learn主要适用于存储在NumPy数组或SciPy稀疏矩阵中的数字数据。
该库的工具套件还支持其他各种任务,例如数据集加载和工作流管道创建–结合数据转换器对象和估计器。但是由于设计限制,scikit-learn也有限制。例如,它不支持深度学习、强化学习或GPU,并且该库的网站称其开发人员“仅考虑完善的算法用于包含”。
14. TensorFlow
TensorFlow是由谷歌开发的开源机器学习平台,人们特别喜欢用它来部署深度学习神经网络方面。该平台采用张量形式的输入,类似于NumPy多维数组,然后使用图结构将数据执行开发人员指定的一系列计算操作。它还提供急切执行(eager execution)编程环境,该环境独立运行操作,而无需使用图形,这为研究和调试机器学习模型提供更大的灵活性。
谷歌在2015年将TensorFlow开源,并在2017年发布1.0.0版。TensorFlow使用Python作为其核心编程语言,现在还结合Keras高级API来构建和训练模型。另外,TensorFlow.js库支持使用JavaScript开发模型,并且可以使用C ++构建自定义操作(简称为ops)。
该平台还包括TensorFlow扩展模块,用于端到端部署生产机器学习管道,以及用于移动和物联网设备的TensorFlow Lite。TensorFlow模型可以在CPU、GPU和谷歌专用Tensor处理单元进行训练和运行。
15. Weka
Weka是开源工作台,它提供一组机器学习算法,可用于数据挖掘任务。Weka的算法被称为分类器,该算法可以直接应用到数据集,而无需通过GUI或命令行界面进行任何编程以提供附加功能;它们也可以通过Java API部署。
该工作台可用于分类、聚类、回归和关联规则挖掘应用程序,并且还包括一组数据预处理和可视化工具。此外,Weka支持与R、Python、Spark和其他库(例如scikit-learn)的集成。对于深度学习用途,附加软件包可将其与Eclipse Deeplearning4j库相结合。
Weka是GNU通用公共许可证许可的免费软件。1992年在新西兰Waikato大学开发出该软件;最初的版本用Java进行重写,以创建当前的工作台,该工作台于1999年首次发布。Weka全称是Waikato Environment for Knowledge Analysis,它也是新西兰本土一种不会飞的鸟的名称,该技术的开发人员称这种鸟具有“好奇的天性”。
数据科学和机器学习平台
很多软件供应商也提供商业许可平台,这些平台可集成功能用于机器学习、AI和其他数据科学应用程序。这些产品种类繁多-它们包括机器学习操作中心、自动化机器学习平台和全功能分析套件,其中有些产品会结合这些功能。很多平台都包含上面列出的数据科学工具。
Matlab和SAS也可以算作数据科学平台。数据科学团队可以考虑的的其他重要平台选项包括:
- Alteryx Analytic Process Automation Platform
- Amazon SageMaker
- Azure Machine Learning
- Databricks Lakehouse Platform
- Dataiku
- DataRobot
- Domino Data Science Platform
- Google Cloud AI Platform
- H2O AI Hybrid Cloud
- IBM Watson Studio
- Knime
- RapidMiner
- Tibco Data Science
有些平台还提供免费的开源或社区版本-例如Dataiku和H2O。Knime结合开源分析平台与商业Knime Server软件包,该软件包支持基于团队的协作以及工作流自动化、部署和管理。