十个基本的Python数据科学软件包
由于它是机器学习的首选语言,本文介绍了以Python为中心的十个基本的数据科学软件包,包括最受欢迎的机器学习软件包。
Scikit-Learn
Scikit-Learn是一个基于SciPy和NumPy的Python机器学习模块。它由David Cournapeau开发,起初是谷歌的一个“编程夏天”项目。从那时起,它已发展到20000多人次提交和90多个版本。摩根大通和Spotify等公司将它用于各自的数据科学工作中。
由于Scikit-Learn的学习曲线很平缓,连企业的业务人员也能使用它。比如说,Scikit-Learn官网上的一系列教程(https://scikit-learn.org/stable/auto_examples/index.html#examples-based-on-real-world-datasets)向你展示了如何分析现实世界的数据集。如果你是初学者,想学习机器学习库,Scikit-Learn就是入门之选。
其要求如下:
- Python 3.5或更高版本
- NumPy 1.11.0或更高
- SciPy 0.17.0或更高
PyTorch
PyTorch擅长两件事。首先,它使用强大的GPU加速张量计算。其次,它在基于磁带的autograd系统上构建动态神经网络,从而允许重用和更高的性能。如果你是学者或工程师,想要简单易学的软件包来完成这两件事,PyTorch是适合你的选择。
在特定情况下,PyTorch尤为出色。比如,如上所述,你想通过使用GPU更快地计算张量?那就使用PyTorch,因为NumPy无法做到这一点。想使用RNN进行语言处理?那就使用PyTorch,因为它拥有运行时定义的功能。或者你想使用深度学习但你只是初学者?那就使用PyTorch,因为Scikit-Learn不适合深度学习。
PyTorch的要求取决于你的操作系统。安装比Scikit-Learn稍微复杂一些。我建议使用“Get Started”页面(https://pytorch.org/get-started/locally/)作为指导。它通常需要以下:
- Python 3.6或更高版本
- Conda 4.6.0或更高版本
Caffe
Caffe是最快实现卷积网络的工具之一,因此非常适合图像识别。它以处理图像见长。
贾扬清在加州大学伯克利分校攻读博士学位时开始开发Caffe。它采用BSD 2-Clause许可证来发布,被誉为是市面上性能最高的深度学习框架之一。据官网称,Caffe的图像处理速度相当惊人,声称“使用单单一个英伟达K40 GPU每天就可以处理6000余万个图像。”
我要强调一点,尽管学习曲线仍然相对平缓,但Caffe假设你至少具备机器学习方面的中级知识。
与PyTorch一样,要求取决于你的操作系统。在此查看安装指南(http://caffe.berkeleyvision.org/installation.html)。可以的话,我建议你使用Docker版本,以便马上可以使用。强制性依赖项如下:
- CUDA for GPU模式(https://developer.nvidia.com/cuda-zone)
- 建议使用库版本7或更高版本以及最新的驱动程序版本,但6系列版本也很好
- 5.5和5.0版本兼容,但被认为是旧版本
- 通过ATLAS、MKL或OpenBLAS进行BLAS(http://en.wikipedia.org/wiki/Basic_Linear_Algebra_Subprograms)
- Boost 1.55或更高版本(http://www.boost.org/)
TensorFlow
由于一些很充分的原因,TensorFlow是最著名的机器学习库之一。它擅长使用数据流图进行数值计算。
TensorFlow最初由谷歌Brain开发,是开源的。面对一系列任务,它使用数据流图和可微分编程,使其成为有史以来最灵活、最强大的机器学习库之一。
如果你需要快速处理大型数据集,这是不容忽视的库。
最新的稳定版本是v1.13.1,但新的v2.0现处于beta测试中。
Theano
Theano是最早的用于深度学习开发的开源软件库之一,最适合用于高速计算。
虽然Theano宣布在2017年发布v1.0之后停止主要开发,但你仍可以对其进行历史研究。它之所以跻身本文十大Python数据科学软件包行列,是由于如果你熟悉它,会大致了解它的创新后来如何演变成了如今你在激烈竞争的库中看到的功能。
Pandas
Pandas是一个用Python编写的强大而灵活的数据分析库。虽然不是严格意义上的机器学习库,但它非常适合用于针对大型数据集的数据分析和处理。尤其是,我喜欢将其用于其数据结构(比如DataFrame)、时间序列操纵和分析以及数字数据表。大企业和初创公司的许多业务员工可以轻松地拿来Pandas进行分析。此外,它非常易于上手,在数据分析功能方面不输给与之竞争的库。
如果你想使用Pandas,需要以下:
- Setuptools版本24.2.0或更高版本
- NumPy版本1.12.0或更高版本
- Python dateutil 2.5.0或更高版本
- 用于跨平台时区计算的pytz
Keras
Keras为快速实验而设计。它也可以在TensorFlow等其他框架上运行。作为深度学习库,Keras以轻松快速地制作原型而著称。
Keras因易于使用的API而在深度学习库爱好者中备受欢迎。Jeff Hale进行了一番整理,对主要的深度学习框架进行了排名,Keras相比毫不逊色。
Keras的唯一要求是要有三种后端引擎之一:比如TensorFlow、Theano或CNTK。
NumPy
NumPy是使用Python进行科学计算所需的基本软件包。对于想要一种易于使用的Python库进行科学计算的研究人员来说,这是很好的选择。实际上,NumPy正是为此目的设计的。它使数组计算变得容易很多。
最初,NumPy的代码是SciPy的一部分。然而,需要在工作中使用数组对象的科学家必须安装庞大的SciPy软件包。为了避免这种情况,一个新的软件包与SciPy分开来,名为NumPy。
如果你想使用NumPy,需要Python 2.6.x、2.7.x、3.2.x或更高版本。
Matplotlib
Matplotlib是Python 2D绘图库,可轻松创建跨平台的图表和图形。
到目前为止,我们介绍了许多机器学习、深度学习甚至快速计算框架。不过就数据科学而言,你还需要绘制图形和图表。谈到数据科学和Python,会立即想到用于绘图和数据可视化的Matplotlib。它很适合创建出版质量的图表。
为了获得长期支持,当前的稳定版本是v2.2.4,但你可以下载v3.0.3以获取最新功能。它确实要求你拥有Python 3或更新版本,因为已停止对Python 2的支持。
SciPy
SciPy是一个庞大的数据科学软件包库,主要面向数学、科学和工程。如果你是数据科学家或工程师,想要在运行技术和科学计算时一应俱全,SciPy正合你的心意。
由于SciPy建立在NumPy上,它有相同的目标受众。它有大量的子软件包,每个子软件包专注于特定领域,比如傅立叶变换、信号处理、优化算法、空间算法和最近邻。实际上,这是典型数据科学家所需的配套Python库。
就需求而言,如果你需要SciPy,还需要NumPy。