在本文中,我们将介绍一系列Python中的第三方库,开发人员可以使用这些库来清洗、分析和可视化数据,实现机器学习相关的各种应用。 

 

我们将会介绍以下 10 个库:  

 

TensorFlow 

Scikit-Learn

NumPy

Keras 

PyTorch 

LightGBM

Eli5

SciPy

Theano

Pandas

 

 

Python是目前最为流行,使用广泛的编程语言之一,已经取代了业界许多编程语言的地位。Python在开发人员中受欢迎的原因有很多,其中最重要的一个原因就是Python有大量可供用户使用的开源第三方库。Python的语法的简洁特性吸引了许多开发人员、厂商为其创建各种功能库,方便用户使用,其中就包括了大量机器学习类的库。由于有大量的开源库,Python在机器学习行业中备受欢迎。

 

为什么 python 公共库 比 java多 python为什么有这么多库_大数据

 

 

 


我们即将介绍的第一个库是来自Google的TensorFlow。

 

TensorFlow

 

为什么 python 公共库 比 java多 python为什么有这么多库_人工智能_02

 

 

 TensorFlow 是什么? 

 

如果您目前正在使用Python进行机器学习项目,那么您很可能已经听说过这个流行的开源库。该库是 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训练的模型。

 

在 TensorFlow 中创建的所有库都是用 C 和 C++ 编写的。不过,它还有一个复杂的 Python 前端。我们的 Python 代码将会被编译,然后在使用 C 和 C++ 构建的 TensorFlow 分布式执行引擎上执行。


 

Scikit-Learn

为什么 python 公共库 比 java多 python为什么有这么多库_机器学习_03

 

 

 

Scikit-Learn 是什么?

 

Scikit-Learn 是一个与 NumPy 和 SciPy 相关的 Python 库。它被认为是处理复杂数据的首选库之一。这个库正在进行频繁升级。其中一个升级是提供交叉验证功能,这可以提高其使用多个度量的能力。许多机器学习模型训练方法,如逻辑回归和最近邻方法,都在进行改进。 

 

Scikit-Learn 的特点

 

  • 交叉验证:有多种方法可以检验监督机器学习模型对不可见数据的准确性。
     
  • 无监督学习算法:Scikit-Learn提供了大量的机器学习算法,从聚类、因子分析和主成分分析到无监督神经网络。
     
  • 特征提取:用于从图像和文本中提取特征(例如词袋“Bag-of-words”)。

 

Scikit-Learn 在哪里使用?

 

它可以应用于各种标准机器学习和数据挖掘任务,如降维、分类、回归、聚类和模型选择等。


 

NumPy

 

为什么 python 公共库 比 java多 python为什么有这么多库_人工智能_04

NumPy 是什么?

 

NumPy 被认为是 Python 中受欢迎的机器学习库之一。 

 

TensorFlow 和其他库在内部使用 NumPy 在张量上执行多个操作。数组接口是 NumPy 最好也是最重要的特性。

 

NumPy 的特点

 

  • 交互性:NumPy 交互性强,易于使用。
     
  • 数学计算:使复杂的数学计算变得非常简单。
     
  • 直观性:使编码和概念的掌握变得非常容易。
     
  • 更新及时:得益于广泛的使用,因此有大量的开源贡献。

 

NumPy 在哪里使用?

 

NumPy 的接口可用于将图像、声波和其他二进制原始流表达为 N 维数组。


 

Keras

 

为什么 python 公共库 比 java多 python为什么有这么多库_机器学习_05

 

Keras 是什么?

Keras 被认为是 Python 中最酷的机器学习库之一。它提供了一种更简单的机制来表达神经网络。Keras 还为编译模型、处理数据集、图形可视化等提供了一些实用程序。

 

在后端,Keras 在内部使用 Theano 或 TensorFlow,也可以使用一些最流行的神经网络,如 CNTK。与其他机器学习库比较,Keras 的速度相对较慢。因为它是通过使用后端架构创建计算图,然后利用它来执行操作的。不过,Keras 的所有模型都是可移植的。 

 

Keras 的特点

 

  • Keras 在 CPU 和 GPU 上都能顺利运行。
     
  • Keras 支持几乎所有的神经网络模型,包括完全连接的、卷积的、池化的、递归的、嵌入的等等。此外,这些模型还可以组合起来构建更为复杂的模型。
     
  • Keras 在本质上是模块化的,具有难以置信的表现力、灵活性,并易于创新研究。
     
  • Keras 是一个完全基于 Python 的框架,可以方便地进行调试和改写。

 

Keras 在哪里使用?

 

我们实际已经在不断地与 Keras 开发的功能进行交互:它在 Netflix、Uber、Yelp、Instacart、Zocdoc、Square 等其他许多公司都有应用。Keras 在那些将深度学习作为产品核心的初创公司中特别受欢迎,同时也是深度学习研究人员的最爱。大型科学组织,特别是 CERN(欧洲核子研究中心)和 NASA(美国国家航空航天局)的研究人员也采用了 Keras。

 

Keras 包含许多常用的神经网络构建块的实现,例如层、目标、激活函数、优化器和一系列工具,使图像和文本数据的处理变得更加容易。

 

此外,Keras 还提供了许多预处理的数据集和预训练模型,如 MNIST、VGG、Inception、SqueezeNet、ResNet 等等。


 

PyTorch

为什么 python 公共库 比 java多 python为什么有这么多库_python_06

 

 

 

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

 

为什么 python 公共库 比 java多 python为什么有这么多库_人工智能_07

 

 

 

LightGBM 是什么

 

梯度提升(Gradient Boosting)是最流行的机器学习算法之一,它通过使用重新定义的基本模型和决策树来帮助开发人员构建新的算法。因此,有一些专门的库是为快速有效地实现这种方法而设计的。包括微软设计的LightGBM。

 

LightGBM与XGBoost 、CatBoost成为了解决梯度提升算法问题的竞争对手,可以以几乎相似的方式加以利用。 

 

LightGBM 的特点

 

  • 计算速度快,生产效率高。
     
  • 直观,易于使用。
     
  • 比许多其他深度学习库有更快的训练。

 

  • 在考虑 NaN 值和其他规范值时不会产生错误。

 

LightGBM 在哪里使用?

 

这个库提供了高度可扩展、优化和快速的梯度提升实现,这使得它在机器学习开发人员中备受欢迎。因为许多机器学习全栈开发人员是通过使用这些算法在机器学习竞赛中获胜的。

 


Eli5

 

为什么 python 公共库 比 java多 python为什么有这么多库_量化交易_08

Eli5 是什么?

 

大多数情况下,机器学习模型的预测结果并不准确,而内置 Python 的 Eli5 机器学习库有助于克服这一挑战。它结合了可视化和调试所有的机器学习模型,并跟踪算法的所有工作步骤。

 

Eli5 的特点

 

Eli5 支持 XGBoost、lighting、scikit-learn 和 sklearn-crfsuite 库。上面提到的所有库都可以用于执行不同的机器学习任务。 

 

 

Eli5 在哪里使用?

 

需要在短时间内进行大量计算的数学应用。

 

在与其他 Python 包存在依赖关系的情况下,Eli5 扮演着至关重要的角色。

 

遗留应用和在各个领域实施较新的方法。

 


 

SciPy

 

为什么 python 公共库 比 java多 python为什么有这么多库_python_09

 

 

SciPy 是什么?

 

SciPy 是一个面向应用程序开发人员和工程师的机器学习库。我们需要了解 SciPy 库和 SciPy 栈之间的区别。SciPy 库包含用于优化、线性代数、积分和统计的模块。

 

SciPy 的特点

 

SciPy 库的主要特点是使用 NumPy 开发,其数组最大限度地利用了 NumPy。此外,SciPy 使用其特定子模块提供了所有高效的数值例程,比如优化、数值积分和许多其他例程。

 

所有 SciPy 子模块中的所有函数都有良好的文档说明。

 

SciPy 在哪里使用?

 

SciPy 是一个使用 NumPy 求解数学函数的库。SciPy 使用 NumPy 数组作为基本数据结构,并附带用于科学编程中各种常用任务的模块,包括线性代数、微积分、常微分方程求解和信号处理等任务,都可以通过 SciPy 轻松处理。

 


 

Theano

 

为什么 python 公共库 比 java多 python为什么有这么多库_量化交易_10

 

 

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

为什么 python 公共库 比 java多 python为什么有这么多库_量化交易_11

 

 

 

Pandas 是什么?

 

Pandas 是 Python 中的一个机器学习库,它提供高级的数据结构和各种各样的分析工具。这个库最大的特性之一是能够使用一个或两个命令转换复杂的数组操作。Pandas 有很多内置的分组、组合数据、过滤以及时间序列功能的方法。所有这些方法都有出色的速度指示器。

 

Pandas 的特点

 

Pandas 使操作数据的过程变得更容易。对重新索引、迭代、排序、聚合、连接和可视化等操作的支持是 Pandas 的亮点之一。

 

Pandas 在哪里使用?

 

目前,Pandas 库的发行版本较少,其中包括数百个新功能、bug 修复、增强和 API 中的更改。Pandas 的改进在于它能够对数据进行分组和排序,为应用方法选择最适合的输出,并为执行自定义类型操作提供支持。

 

在其他事项中,当涉及到使用 Pandas时,数据分析是一大亮点。而当与其他库和工具一起使用时,Pandas 确保了高度的功能性和良好的灵活性。