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 是个不错的选择。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 用PHP写PHP7扩展,超级简单对吧!
- python时间日期格式化和反格式化
- 无锁编程 - Double-checked Locking
- Java_环境搭建、变量的使用
- golang string和[]byte的对比
- PHP中使用Redis长连接笔记
- 从外部设置传入Go变量
- 图解elasticsearch的_source、_all、store和index
- Stream API
- Lambda表达式
- ES的Query、Filter、Metric、Bucketing使用详解
- Golang的单引号、双引号与反引号
- CentOS配置docker和docker-compose
- 给Linux增加swap内存
- 网鼎杯2018-Fakebook