2019年你不可不知的十大Python库,可实现机器学习
在本文中,我们将讨论 Python 中的一些优选库,开发人员可以使用这些库来解析、清理和表示数据,并在现有应用中实现机器学习。
我们将会介绍以下 10 个库:
TensorFlow
Scikit-Learn
NumPy
Keras
PyTorch
LightGBM
Eli5
SciPy
Theano
Pandas
Python 是目前流行,使用广泛的编程语言之一,已经取代了业界许多编程语言。Python 在开发人员中受欢迎的原因有很多,其中最重要的一个原因就是 Python 有大量可供用户使用的库。Python 的简单性吸引了许多开发人员为机器学习创建新的库。由于有大量的库,Python 在机器学习专家中非常流行。
因此,我即将介绍的第一个库是 TensorFlow。
TensorFlow
TensorFlow 是什么?
如果你目前正在使用 Python 进行机器学习项目,那么你可能已经听说过这个流行的开源库,即 TensorFlow。该库是 Google 与 Brain Team 合作开发的。Google 的每一个机器学习应用几乎都有 TensorFlow 的影子。
TensorFlow 的工作方式类似于一个计算库,用于编写设计大量张量运算的新算法。由于神经网络可以很容易地表示为计算图,因此它们可以用 TensorFlow 作为对张量(Tensor)的一些列操作来实现。此外,张量是表述数据的 N 维矩阵。
TensorFlow 的特点
TensorFlow 针对速度进行了优化,并利用 XLA 等技术实现快速线性代数运算。
- 响应式构造:使用 TensorFlow,我们可以轻松地将计算图的每一部分进行可视化,在使用 NumPy 或 SciKit 时并没有这个选项。
- 灵活性:TensorFlow 的一个非常重要的特性是,它的操作非常灵活。这意味着它实现了模块化,对于你想要使其独立的部分,它可以提供这一选项。
- 易于训练:对于分布式计算,它可以很容易地在 CPU 上进行训练,也可以在 GPU 上进行训练。
- 并行化神经网络训练:TensorFlow 提供了管道。从某种意义上说,你可以训练多个神经网络和多个 GPU,这使得模型在大型系统上非常高效。
- 大型社区:毋庸讳言,因为 TensorFlow 是由 Google 开发的,所以有一大群软件工程师在不断改进 TensorFlow 的稳定性。
- 开源:这个机器学习库最好的地方在于它是开源的,所以只要有互联网,任何人都可以使用它。
TensorFlow 在哪里使用?
实际上你每天都在使用 TensorFlow,但像 Google 语音搜索或 Google 相册这样的应用却是间接的。这些应用是使用这个库进行开发的。
在 TensorFlow 中创建的所有库都是用 C 和 C++ 编写的。不过,它还有一个复杂的 Python 前端。你的 Python 代码将会被编译,然后在使用 C 和 C++ 构建的 TensorFlow 分布式执行引擎上执行。
TensorFlow 的应用数量实际上是无限的,这就是 TensorFlow 的美妙之处。
Scikit-Learn
Scikit-Learn 是什么?
Scikit-Learn 是一个与 NumPy 和 SciPy 相关的 Python 库。它被认为是处理复杂数据的优选库之一。这个库正在进行大量更改。其中一个更改是交叉验证功能,提供了使用多个度量的能力。许多训练方法,如逻辑回归和最近邻方法,都得到了一些改进。
Scikit-Learn 的特点
- 交叉验证:有多种方法可以检验监督模型对不可见数据的准确性。
- 无监督学习算法:Scikit-Learn 提供了大量的算法,从聚类、因子分析和主成分分析到无监督神经网络。
- 特征提取:用于从图像和文本中提取特征(例如词袋)。
Scikit-Learn 在哪里使用?
它包含许多用于实现标准机器学习和数据挖掘任务的算法,如降维、分类、回归、聚类和模型选择。
NumPy
NumPy 是什么?
NumPy 被认为是 Python 中受欢迎的机器学习库之一。
TensorFlow 和其他库在内部使用 NumPy 在张量上执行多个操作。数组接口是 NumPy 最好也是最重要的特性。
NumPy 的特点
- 交互性:NumPy 交互性强,易于使用。
- 数学:使复杂的数学实现变得非常简单。
- 直观性:使编码和概念的掌握变得非常容易。
- 大量的交互:得益于广泛的使用,因此有大量的开源贡献。
NumPy 在哪里使用?
NumPy 的接口可用于将图像、声波和其他二进制原始流表达为 N 维数组。为实现这个用于机器学习的库,了解 NumPy 对于全栈开发人员来说很重要。
Keras
Keras 是什么?
Keras 被认为是 Python 中最酷的机器学习库之一。它提供了一种更简单的机制来表达神经网络。Keras 还为编译模型、处理数据集、图形可视化等提供了一些最佳实用程序。
在后端,Keras 在内部使用 Theano 或 TensorFlow,也可以使用一些最流行的神经网络,如 CNTK。与其他机器学习库比较,Keras 的速度相对较慢。因为它是通过使用后端架构创建计算图,然后利用它来执行操作的。不过,Keras 的所有模型都是可移植的。
Keras 的特点
- 1.Keras 在 CPU 和 GPU 上都能顺利运行。
- 2.Keras 支持几乎所有的神经网络模型,包括完全连接的、卷积的、池化的、递归的、嵌入的等等。此外,这些模型还可以组合起来构建更为复杂的模型。
- 3.Keras 在本质上是模块化的,具有难以置信的表现力、灵活性,并易于创新研究。
- 4.Keras 是一个完全基于 Python 的框架,可以方便地进行调试和探索。
Keras 在哪里使用?
你已经在不断地与 Keras 开发的功能进行交互:它在 Netflix、Uber、Yelp、Instacart、Zocdoc、Square 等其他许多公司都有应用。Keras 在那些将深度学习作为产品核心的初创公司中特别受欢迎,同时也是深度学习研究人员的最爱。大型科学组织,特别是 CERN(欧洲核子研究中心)和 NASA(美国国家航空航天局)的研究人员也采用了 Keras。
Keras 包含许多常用的神经网络构建块的实现,例如层、目标、激活函数、优化器和一系列工具,使图像和文本数据的处理变得更加容易。
此外,Keras 还提供了许多预处理的数据集和预训练模型,如 MNIST、VGG、Inception、SqueezeNet、ResNet 等等。
PyTorch
PyTorch 是什么?
PyTorch 是最大的机器学习库,它允许开发人员利用 GPU 的加速执行张量计算,创建动态计算图,并自动计算梯度。除此之外,PyTorch 还提供了丰富的 API,用于解决与神经网络相关的应用问题。
这个机器学习库是基于 Torch 的,Torch 是一个用 C 语言实现的开源机器学习库,在 Lua 中有个包装器。这个用 Python 编写的机器学习库是 2017 年推出的,自推出以来,吸引了越来越多的机器学习开发人员。
PyTorch 的特点
- 混合前端:新的混合前端在 Eager 模式(动态图模式)下提供了易用性和灵活性,同时在 C++ 运行时环境中无缝过渡到图形模式,以实现速度、优化和功能。
- 分布式训练:通过利用 Python 和 C++ 提供的异步执行集合操作和对等通信的本地支持,优化研究和生产中的性能。
- Python 优先:PyTorch 并非绑定到单一 C++ 框架中的 Python。它是为了深 入集成到 Python 中而构建的,因此它可以与流行的库和包(如 Cython 和 Numba 等)一起使用。
- 库和工具:一个由研究人员和开发人员组成的活跃社区,建立了一个丰富的工具和库生态系统,用于扩展 PyTorch ,并支持从计算机视觉到强化学习等领域的开发。
PyTorch 在哪里使用?
PyTorch 主要用于自然语言处理等应用。PyTorch 主要是由 Facebook 的人工智能研究小组开发的。Uber 的概率编程“Pyro”软件就是建立在这个基础上的。PyTorch 在很多方面都超过了 TensorFlow,最近得到了很多关注。
LightGBM
LightGBM 是什么
梯度提升(Gradient Boosting)是最好的、最流行的机器学习库之一,它通过使用重新定义的基本模型和决策树来帮助开发人员构建新的算法。因此,有一些专门的库是为快速有效地实现这种方法而设计的。
这些库分别是 LightGBM、XGBoost 和 CatBoost。所有这些库都是帮助解决常见问题的竞争对手,可以以几乎相似的方式加以利用。
LightGBM 的特点
- 计算速度快,生产效率高。
- 直观,易于使用。
- 比许多其他深度学习库有更快的训练。
- 在考虑 NaN 值和其他规范值时不会产生错误。
LightGBM 在哪里使用?
这个库提供了高度可扩展、优化和快速的梯度提升实现,这使得它在机器学习开发人员中备受欢迎。因为大多数机器学习全栈开发人员是通过使用这些算法在机器学习竞赛中获胜的。
Eli5
Eli5 是什么?
大多数情况下,机器学习模型的预测结果并不准确,而内置 Python 的 Eli5 机器学习库有助于克服这一挑战。它结合了可视化和调试所有的机器学习模型,并跟踪算法的所有工作步骤。
Eli5 的特点
Eli5 支持 XGBoost、lighting、scikit-learn 和 sklearn-crfsuite 库。上面提到的所有库都可以用于执行不同的任务。
Eli5 在哪里使用?
- 需要在短时间内进行大量计算的数学应用
- 在与其他 Python 包存在依赖关系的情况下,Eli5 扮演着至关重要的角色。
- 遗留应用和在各个领域实施较新的方法
SciPy
SciPy 是什么?
SciPy 是一个面向应用程序开发人员和工程师的机器学习库。你需要了解 SciPy 库和 SciPy 栈之间的区别。SciPy 库包含用于优化、线性代数、积分和统计的模块。
SciPy 的特点
SciPy 库的主要特点是使用 NumPy 开发,其数组最大限度地利用了 NumPy。此外,SciPy 使用其特定子模块提供了所有高效的数值例程,比如优化、数值积分和许多其他例程。
所有 SciPy 子模块中的所有函数都有良好的文档说明。
SciPy 在哪里使用?
SciPy 是一个使用 NumPy 求解数学函数的库。SciPy 使用 NumPy 数组作为基本数据结构,并附带用于科学编程中各种常用任务的模块,包括线性代数、积分(微积分)、常微分方程求解和信号处理等任务,都可以通过 SciPy 轻松处理。
Theano
Theano 是什么?
Theano 是 Python 中用于计算多维数组的计算框架机器学习库。Theano 的工作方式与 TensorFlow 类似,但效率不如 TensorFlow。因为它不能适应生产环境。
此外,还可以在与 TensorFlow 类似的分布式或并行环境中使用 Theano。
Theano 的特点
- 与 NumPy 紧密集成:能够在 Theano 编译的函数中完全使用 NumPy 数组。
- GPU 的透明使用:执行数据密集型计算要比 CPU 上快得多。
- 高效的符号微分:Theano 为具有一个或多个输入的函数求导。
- 速度和稳定性的优化:即使 x 非常小,也能获得 log(1+x) 的正确答案。这只是证明 Theano 稳定性的一个例子。
- 动态 C 代码生成:计算表达式的速度比以往都快,从而极大提高效率。
- 广泛的单元测试和自我验证:检测和诊断模型中的多种类型的错误和歧义。
Theano 在哪里使用?
Theano 表达式的实际语法是符号化的,这可能会让习惯正常软件开发的初学者感到不适。具体来说,表达式是以抽象的方式进行定义、编译的,然后实际用于计算。
Theano 是专门为用于深度学习的大型神经网络算法的计算类型而设计的。它是最早的类库之一(2007 年开始开发),被认为是深度学习研究和开发的行业标准。Theano 目前被用于多个神经网络项目,随着时间的推移,Theano 的普及率也在不断提高。
Pandas
Pandas 是什么?
Pandas 是 Python 中的一个机器学习库,它提供高级的数据结构和各种各样的分析工具。这个库最大的特性之一是能够使用一个或两个命令转换复杂的数据操作。Pandas 有很多内置的分组、组合数据、过滤以及时间序列功能的方法。所有这些方法都有出色的速度指示器。
Pandas 的特点
Pandas 使操作数据的过程变得更容易。对重新索引、迭代、排序、聚合、连接和可视化等操作的支持是 Pandas 的亮点之一。