2017年与机器学习相关的10大Python开源库

作者|Alan Descoins

译者|薛命灯

编辑|Emily

Pipenv

Pipenv 最初是由 Kenneth Reitz 开发的一个业余项目,旨在将其他包管理器(如 npm 和 yarn)的概念引入到 Python 当中。有了 Pipenv,开发人员就不需要再安装 virtualenv 和 virtualenvwrapper,也不需要管理 requirements.txt 文件。他们只需要在 Pipfile 文件中声明依赖,然后通过命令行来添加、移除和更新依赖。Pipeenv 会生成 Pipfile.lock 文件,开发人员可以进行决策式的构建。Pipeenv 还提供了详细的文档。

PyTorch

由 Facebook 开源的 PyTorch 是 2017 年最受瞩目的深度学习框架。PyTorch 以 Torch 为基础,并进行了一些改进。因为在过去几年,很多数据科学家转向使用 Python,所以 PyTorch 在 Python 深度学习领域起到了巨大作用。

之所以很多研究人员对 PyTorch 趋之若鹜,是因为 PyTorch 实现了动态计算图(Dynamic Computational Graph)模型。在使用 TensorFlow、CNTK 或 MXNet 这些框架时,需要预先定义好计算图(Computational Graph),但它们都是静态的。而在某些场景下,如在进行自然语言处理时,可能涉及多种不同的任务,比如你可以缩放图像,但无法处理边长的文本。PyTorch 的动态计算图模型在这个时候就很有用,开发人员可以在代码里通过 Python 的标准语句在运行时定义计算图,这样就可以自由地完成各种任务。

Caffe 2

Caffe 2 是 Facebook 开源的另一个深度学习框架。初始版 Caffe 已经得到广泛应用,并以无与伦比的性能表现而闻名。不过,因为深度学习发展趋势的变化导致 Caffe 框架停滞不前,于是 Caffe 2 尝试把 Caffe 带入一个新的世界。

它支持分布式模型训练和部署(甚至支持移动平台),兼容最新的 CPU 和 CUDA 硬件。PyTorch 可能更适合用于研究工作,而 Caffe 2 则适合用于大规模的部署,这个已经在 Facebook 得到了实证。

Pendulum

Pendulum 可直接用来替换 Python 的标准 datatime 类,所以可以很容易地与现有代码进行集成,并在必要的时候使用它的功能。Pendulum 还提供了 timedelta,让基于 datetime 的算术运算变得更容易。

Dash

Dash 是今年开源的一个框架,用于构建 Web 应用,使用 Python 进行数据可视化。它使用了 Flask、Plotly.js 和 React,提供了高层的抽象,避免让你再去学习这些框架,从而提升开发效率。

PyFlux

PyFlux 是一个用于处理时序数据的开源框架。时序数据研究是经济统计学的一个子领域,主要研究时序行为以及预测时序行为。PyFlux 提供了概率性的时序建模方式,并实现了若干现代时序模型,如 GARCH。

Fire

在进行项目开发时,经常会用到命令行工具。传统的工具有 argparse,Python 还提供了 click 和 docopt。而谷歌今年开源的 Fire 则以一种全新的方式解决同样的问题。

Fire 可以为每个 Python 项目自动生成一个 CLI,也就说,你无需写任何代码或 docstring 就可以拥有一个 CLI。你只需要调用 Fire 的一个方法,并传入一个参数,比如一个函数、一个对象、一个类,或者什么都不传(这样的话整个代码会变成一个 CLI)。

imbalanced-learn

在理想的世界里,用于训练的数据集可以是完美均衡的。但在现实世界,很多时候需要处理不均衡的数据集。例如,在预测信用卡交易欺诈时,大部分的交易是合法的(可能 99.9% 以上),在这种情况下,机器学习的性能会很糟糕,所以需要做一些额外的工作。

imbalanced-learn 是一个开源的 Python 包,可以帮你做掉很多工作。它与 scikit-learn 兼容,是 scikit-learn-contrib 项目的一部分。

FlashText

在进行数据清理时,很多人会用到正则表达式。尽管正则表达式可以完成这些任务,但在处理大量文本时,速度会变得非常慢。

FlashText 是一个更好的替代方案。它的作者提供的基准测试表明,一些原本需要 5 天时间完成的任务在 15 分钟内就可以搞定。FlashText 运行时不会随着搜索关键字数量的增长而增长,而正则表达式的运行时会随搜索关键字的数量呈线性增长。

Luminoth

Luminoth 是使用 TensorFlow 和 Sonnet 构建的开源计算机视觉库,提供了开箱即用的物体检测功能,该功能使用了 Faster R-CNN 模型。

Luminoth 不只是实现了某种特定的模型,它还支持模块化和扩展,所以可以使用不同的模型解决各种问题。它还提供了工具用于转换数据(如图像数据)、增强数据、在多个 GPU 上运行模型训练、运行评估指标、在 TensorBoard 中可视化数据、通过简单的 API 部署训练过的模型。

Luminoth 已经可以与 Google Cloud 的 ML Engine 集成,所以可以直接通过简单的命令在云端进行模型训练,就像在本地机器一样。

其他框架

PyVips

你或许从来没有听说过 libvips 库,不过一定知道 Pillow 或 ImageMagick,它们都是图像处理工具,支持多种格式。相比这些工具库,libvips 的处理速度更快,使用的内存更少。

PyVips 对 libvips 进行了封装,兼容 Python 2.7-3.6(甚至也兼容 PyPy),可以通过 pip 安装。

Requestium

Python 提供了 Requests 库用于进行 Web 界面的自动化操作,但现在很多网站使用了 JavaScript,导致 Requests 无法准确抓取到想要的界面元素。要解决这个问题,需要对由 JavaScript 代码发起的请求进行反向工程,但这种方式费时又费力。当然,我们也可以使用 Selenium,通过编程的方式来解决上述问题,但整体速度仍然较慢。

Requestium 可以用于替代 Requests,它还集成了 Parsel,可以很快写出用于查找页面元素的选择器,从而为开发人员省下不少时间。

Skorch

Skorch 对 PyTorch 进行了封装,提供了类似 scikit-learn 的 API。所以,如果你已经很熟悉 scikit-learn 的 API,但又要使用 PyTorch,那么 Skorch 是个不错的选择。

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20171228G0QN3K00?refer=cp_1026

扫码关注云+社区