Python语言下的机器学习库

Python是最好的编程语言之一,在科学计算中用途广泛:计算机视觉、人工智能、数学、天文等。它同样适用于机器学习也是意料之中的事。

当然,它也有些缺点;其中一个是工具和库过于分散。如果你是拥有unix思维(unix-minded)的人,你会觉得每个工具只做一件事并且把它做好是非常方便的。但是你也需要知道不同库和工具的优缺点,这样在构建系统时才能做出合理的决策。工具本身不能改善系统或产品,但是使用正确的工具,我们可以工作得更高效,生产率更高。因此了解正确的工具,对你的工作领域是非常重要的。

这篇文章的目的就是列举并描述Python可用的最有用的机器学习工具和库。这个列表中,我们不要求这些库是用Python写的,只要有Python接口就够了。我们在最后也有一小节关于深度学习(Deep Learning)的内容,因为它最近也吸引了相当多的关注。

我们的目的不是列出Python中所有机器学习库(搜索“机器学习”时Python包索引(PyPI)返回了139个结果),而是列出我们所知的有用并且维护良好的那些。另外,尽管有些模块可以用于多种机器学习任务,我们只列出主要焦点在机器学习的库。比如,虽然Scipy包含一些聚类算法,但是它的主焦点不是机器学习而是全面的科学计算工具集。因此我们排除了Scipy(尽管我们也使用它!)。

另一个需要提到的是,我们同样会根据与其他科学计算库的集成效果来评估这些库,因为机器学习(有监督的或者无监督的)也是数据处理系统的一部分。如果你使用的库与数据处理系统其他的库不相配,你就要花大量时间创建不同库之间的中间层。在工具集中有个很棒的库很重要,但这个库能与其他库良好集成也同样重要。

如果你擅长其他语言,但也想使用Python包,我们也简单地描述如何与Python进行集成来使用这篇文章列出的库。

Scikit-Learn

Scikit Learn是我们在CB
Insights选用的机器学习工具。我们用它进行分类、特征选择、特征提取和聚集。我们最爱的一点是它拥有易用的一致性API,并提供了很多开箱可用的求值、诊断和交叉验证方法(是不是听起来很熟悉?Python也提供了“电池已备(译注:指开箱可用)”的方法)。锦上添花的是它底层使用Scipy数据结构,与Python中其余使用Scipy、Numpy、Pandas和Matplotlib进行科学计算的部分适应地很好。因此,如果你想可视化分类器的性能(比如,使用精确率与反馈率(precision-recall)图表,或者接收者操作特征(Receiver
Operating
Characteristics,ROC)曲线),Matplotlib可以帮助进行快速可视化。考虑到花在清理和构造数据的时间,使用这个库会非常方便,因为它可以紧密集成到其他科学计算包上。

另外,它还包含有限的自然语言处理特征提取能力,以及词袋(bag of words)、tfidf(Term Frequency
Inverse Document
Frequency算法)、预处理(停用词/stop-words,自定义预处理,分析器)。此外,如果你想快速对小数据集(toy
dataset)进行不同基准测试的话,它自带的数据集模块提供了常见和有用的数据集。你还可以根据这些数据集创建自己的小数据集,这样在将模型应用到真实世界中之前,你可以按照自己的目的来检验模型是否符合期望。对参数最优化和参数调整,它也提供了网格搜索和随机搜索。如果没有强大的社区支持,或者维护得不好,这些特性都不可能实现。我们期盼它的第一个稳定发布版。

Statsmodels

Statsmodels是另一个聚焦在统计模型上的强大的库,主要用于预测性和探索性分析。如果你想拟合线性模型、进行统计分析,或者预测性建模,那么Statsmodels非常适合。它提供的统计测试相当全面,覆盖了大部分情况的验证任务。如果你是R或者S的用户,它也提供了某些统计模型的R语法。它的模型同时也接受Numpy数组和Pandas数据帧,让中间数据结构成为过去!

PyMC

PyMC是做贝叶斯曲线的工具。它包含贝叶斯模型、统计分布和模型收敛的诊断工具,也包含一些层次模型。如果想进行贝叶斯分析,你应该看看。

Shogun

Shogun是个聚焦在支持向量机(Support Vector Machines,
SVM)上的机器学习工具箱,用C++编写。它正处于积极开发和维护中,提供了Python接口,也是文档化最好的接口。但是,相对于Scikit-learn,我们发现它的API比较难用。而且,也没提供很多开箱可用的诊断和求值算法。但是,速度是个很大的优势。

Gensim

Gensim被定义为“人们的主题建模工具(topic modeling for
humans)”。它的主页上描述,其焦点是狄利克雷划分(Latent Dirichlet Allocation,
LDA)及变体。不同于其他包,它支持自然语言处理,能将NLP和其他机器学习算法更容易组合在一起。如果你的领域在NLP,并想进行聚集和基本的分类,你可以看看。目前,它们引入了Google的基于递归神经网络(Recurrent
Neural Network)的文本表示法word2vec。这个库只使用Python编写。

Orange

Orange是这篇文章列举的所有库中唯一带有图形用户界面(Graphical User
Interface,GUI)的。对分类、聚集和特征选择方法而言,它是相当全面的,还有些交叉验证的方法。在某些方面比Scikit-learn还要好(分类方法、一些预处理能力),但与其他科学计算系统(Numpy,
Scipy, Matplotlib, Pandas)的适配上比不上Scikit-learn。

但是,包含GUI是个很重要的优势。你可以可视化交叉验证的结果、模型和特征选择方法(某些功能需要安装Graphviz)。对大多数算法,Orange都有自己的数据结构,所以你需要将数据包装成Orange兼容的数据结构,这使得其学习曲线更陡。

PyMVPA

PyMVPA是另一个统计学习库,API上与Scikit-learn很像。包含交叉验证和诊断工具,但是没有Scikit-learn全面。

深度学习

尽管深度学习是机器学习的一个子节,我们在这里创建单独一节的原因是,它最新吸引了Google和Facebook人才招聘部门的很多注意。

Theano

Theano是最成熟的深度学习库。它提供了不错的数据结构(张量,tensor)来表示神经网络的层,对线性代数来说很高效,与Numpy的数组类似。需要注意的是,它的API可能不是很直观,用户的学习曲线会很高。有很多基于Theano的库都在利用其数据结构。它同时支持开箱可用的GPU编程。

PyLearn2

还有另外一个基于Theano的库,PyLearn2,它给Theano引入了模块化和可配置性,你可以通过不同的配置文件来创建神经网络,这样尝试不同的参数会更容易。可以说,如果分离神经网络的参数和属性到配置文件,它的模块化能力更强大。

Decaf

Decaf是最近由UC Berkeley发布的深度学习库,在Imagenet分类挑战中测试发现,其神经网络实现是很先进的(state of art)。

Nolearn

如果你想在深度学习中也能使用优秀的Scikit-learn库API,封装了Decaf的Nolearn会让你能够更轻松地使用它。它是对Decaf的包装,与Scikit-learn兼容(大部分),使得Decaf更不可思议。

OverFeat

OverFeat是最近猫vs.狗(kaggle挑战)的胜利者,它使用C++编写,也包含一个Python包装器(还有Matlab和Lua)。通过Torch库使用GPU,所以速度很快。也赢得了ImageNet分类的检测和本地化挑战。如果你的领域是计算机视觉,你可能需要看看。

Hebel

Hebel是另一个带有GPU支持的神经网络库,开箱可用。你可以通过YAML文件(与Pylearn2类似)决定神经网络的属性,提供了将神级网络和代码友好分离的方式,可以快速地运行模型。由于开发不久,就深度和广度上说,文档很匮乏。就神经网络模型来说,也是有局限的,因为只支持一种神经网络模型(正向反馈,feed-forward)。但是,它是用纯Python编写,将会是很友好的库,因为包含很多实用函数,比如调度器和监视器,其他库中我们并没有发现这些功能。

Neurolab

NeuroLab是另一个API友好(与Matlabapi类似)的神经网络库。与其他库不同,它包含递归神经网络(Recurrent Neural Network,RNN)实现的不同变体。如果你想使用RNN,这个库是同类API中最好的选择之一。

与其他语言集成

你不了解Python但是很擅长其他语言?不要绝望!Python(还有其他)的一个强项就是它是一个完美的胶水语言,你可以使用自己常用的编程语言,通过Python来访问这些库。以下适合各种编程语言的包可以用于将其他语言与Python组合到一起:

  • R -> RPython
  • Matlab -> matpython
  • Java -> Jython
  • Lua -> Lunatic Python
  • Julia -> PyCall.jl

不活跃的库

这些库超过一年没有发布任何更新,我们列出是因为你有可能会有用,但是这些库不太可能会进行BUG修复,特别是未来进行增强。

  • MDP
  • MlPy
  • FFnet
  • PyBrain

如果我们遗漏了你最爱的Python机器学习包,通过评论让我们知道。我们很乐意将其添加到文章中。

作者:佚名

来源:51CTO

时间: 2024-11-17 20:46:58

Python语言下的机器学习库的相关文章

sklearn:Python语言开发的通用机器学习库

引言:深入理解机器学习并完全看懂sklearn文档,需要较深厚的理论基础.但是,要将sklearn应用于实际的项目中,只需要对机器学习理论有一个基本的掌握,就可以直接调用其API来完成各种机器学习问题. 本文选自<全栈数据之门>,将向你介绍通过三个步骤来解决具体的机器学习问题. sklearn介绍 scikit-learn是Python语言开发的机器学习库,一般简称为sklearn,目前算是通用机器学习算法库中实现得比较完善的库了.其完善之处不仅在于实现的算法多,还包括大量详尽的文档和示例.其

《从问题到程序:用Python学编程和计算》——1.2 Python语言简介

1.2 Python语言简介 本节将首先简单介绍Python语言的一些基本情况,包括其发展和使用的情况.而后介绍Python语言系统的安装和使用方面的基本常识.1.2.1 Python语言的发展和应用 Python语言是CWI(荷兰国家数学和计算机研究中心)的程序员Guido van Rossum在1989年开始开发的一种高级编程语言,当时的主要设计目标是希望能用于方便地管理CWI的Amoeba操作系统.后来,由于其各方面的优点而逐渐流行起来. Python语言现在由Python软件基金会(Py

面向 Python 语言的三大顶级机器学习库

事实证明,无需掌握艰深的数据科学,我们同样能够在机器学习的世界中徜徉.当然,这段旅程不可避免地需要借助各类大数据.人工智能.深度学习与规模化统计与分析工具的帮助. 在今天的文章中,我们将共同了解三款最具人气的Python机器学习库,相信能够帮助大家带来更为顺利的数据科学探索体验. 1.Theano 约十年前诞生的机器学习方案Theano,是目前机器学习领域使用范围最广的CPU与GPU数学编译器之一. 在<Theano:用于快速实现数学表达计算的Python框架>这篇论文当中,作者对这套库进行了

Python机器学习库

   Python在科学计算领域,有两个重要的扩展模块:Numpy和Scipy.其中Numpy是一个用python实现的科学计算包.包括: 一个强大的N维数组对象Array: 比较成熟的(广播)函数库: 用于整合C/C++和Fortran代码的工具包: 实用的线性代数.傅里叶变换和随机数生成函数.      SciPy是一个开源的Python算法库和数学工具包,SciPy包含的模块有最优化.线性代数.积分.插值.特殊函数.快速傅里叶变换.信号处理和图像处理.常微分方程求解和其他科学与工程中常用的

最好的Python机器学习库

引言 毫无疑问,神经网络和机器学习在过去几年一直是高科技领域最热门的话题之一.这一点很容易看出,因为它们解决了很多真正有趣的用例,如语音识别.图像识别.甚至是乐曲谱写.因此,在这篇文章,我决定编制一份囊括一些很好的Python机器学习库的清单,并将其张贴在下面. 在我看来,Python是学习(和实现)机器学习技术最好的语言之一,其原因主要有以下几点: 语言简单:如今,Python成为新手程序员首选语言的主要原因是它拥有简单的语法和庞大的社区. 功能强大:语法简单并不意味着它功能薄弱.Python

《机器学习系统设计:Python语言实现》一导读

前 言 机器学习是计算世界所见的最大趋势之一.机器学习系统具有意义深远且令人兴奋的能力,能够在各种应用领域为人们提供重要的洞察力,从具有开创性的挽救生命的医学研究到宇宙基础物理方面的发现,从为我们提供更健康.更清洁的食物到互联网分析和建立经济模型,等等.事实上,就某种意义而言,这项技术在我们的生活中已经无所不在.要想进入机器学习的领域,并且对其具有充分的认知,就必须能够理解和设计服务于某一项目需要的机器学习系统. 本书的主要内容 第1章从机器学习的基础知识开始,帮助你用机器学习的范式进行思考.你

Python调用C语言开发的共享库方法实例_python

在helloworld工程中,编写了一个简单的两个数值相加的程序,编译成为共享库后,如何使用python对其进行调用呢? 使用ll命令列出当前目录下的共享库,其中共享库名为libhelloworld.so.0.0.0 复制代码 代码如下: ufo@ufo:~/helloworld/.libs$ ll 总用量 32 drwxr-xr-x 2 ufo ufo 4096  1月 29 14:54 ./ drwxr-xr-x 6 ufo ufo 4096  1月 29 16:08 ../ -rw-r--

《机器学习系统设计:Python语言实现》一1.1 人机界面

1.1 人机界面 如果你有幸用过微软Office套件的早期版本,你大概还能记得Mr Clippy办公助手.这一功能出现在Office 97中,每当你在文档开头输入"亲爱的",它就会不请自来,从电脑屏幕的右下角蹦出来,询问"你好像在写信,需要帮助吗?"在Office的早期版本中,Mr Clippy是默认开启的,几乎被所有软件用户嘲笑过,这可以作为机器学习的第一次大败笔而载入史册.那么,为什么这个欢乐的Mr Clippy会如此遭人痛恨呢?在日常办公任务中使用自动化助手不

独家 | 手把手教你用Python 3创建用于机器学习开发的Linux虚拟机(附安装教程&amp;代码)

Linux是使用Python进行机器学习开发的极佳环境.这些工具能够被简便快捷地安装,并且您可以直接开发和运行大型模型. 在本教程中,您将了解如何使用Python创建和安装用于机器学习的Linux虚拟机.完成本教程后,您将知道: 如何下载和安装VirtualBox来管理虚拟机如何下载和安装Fedora Linux如何在Python 3中为机器学习安装一个SciPy环境 如果您的电脑操作系统是Windows.Mac OS X和Linux.那么本教程是适合您的. Linux虚拟机的好处 您可能有很多