最好的Python机器学习库

引言

毫无疑问,神经网络和机器学习在过去几年一直是高科技领域最热门的话题之一。这一点很容易看出,由于它们解决了不少真正有趣的用例,如语音识别、图像识别、甚至是乐乐谱写。所以,在这篇文章,我决定编制一份囊括一些很好的Python机器学习库的清单,并将其张贴在下面。python

在我看来,Python是学习(和实现)机器学习技术最好的语言之一,其缘由主要有如下几点:git

  • 语言简单:现在,Python成为新手程序员首选语言的主要缘由是它拥有简单的语法和庞大的社区。程序员

  • 功能强大:语法简单并不意味着它功能薄弱。Python一样也是数据科学家和Web程序员最受欢迎的语言之一。Python社区所建立的库可让你作任何你想作的事,包括机器学习。github

  • 丰富的ML库:目前有大量面向Python的机器学习库。你能够根据你的使用状况、技术和需求从数百个库中选择最合适的一个。web

上面最后一点能够说是最重要的。驱动机器学习的算法至关复杂,包括了不少的数学知识,因此本身动手去实现它们(并保证其正常运行)将会是一件很困难的任务。幸运地是,有不少聪明的、有奉献精神的人为咱们作了这个困难的工做,所以咱们只须要专一于手边的应用程序便可。算法

这并非一个详尽无遗的清单。有不少代码并未在此列出,在这里我只会发布一些很是相关或知名的库。下面,来看看这份清单吧。编程

最受欢迎的库

我已经对一些比较流行的库和它们擅长的方向作了一个简短的描述,在下一节,我会给出一个更完整的项目列表。数组

Tensorflow服务器

这是清单中最新的神经网络库。在前几天刚刚发行,Tensorflow是高级神经网络库,能够帮助你设计你的网络架构,避免出现低水平的细节错误。重点是容许你将计算表示成数据流图,它更适合于解决复杂问题。网络

此库主要使用C++编写,包括Python绑定,因此你没必要担忧其性能问题。我最喜欢的一个特色是它灵活的体系结构,容许你使用相同的API将其部 署到一个或多个CPU或GPU的台式机、服务器或者移动设备。有此功能的库并很少,若是要说有,Tensorflow就是其一。

它是为谷歌大脑项目开发的,目前已被数百名工程师使用,因此无须怀疑它是否可以创造有趣的解决方案。

尽管和其它的库同样,你可能必须花一些时间来学习它的API,但花掉的时间应该是很值得的。我只花了几分钟了解了一下它的核心功能,就已经知道Tensorflow值得我花更多的时间让我来实现个人网络设计,而不只仅是经过API来使用。

scikit-learn

scikit-learn绝对是其中一个,若是不是最流行的,那么也算得上是全部语言中流行的机器学习库之一。它拥有大量的数据挖掘和数据分析功能,使其成为研究人员和开发者的首选库。

其内置了流行的NumPy、SciPy,matplotlib库,所以对许多已经使用这些库的人来讲就有一种熟悉的感受。尽管与下面列出的其余库相比,这个库显得水平层次略低,并倾向于做为许多其余机器学习实现的基础。

Theano

Theano是一个机器学习库,容许你定义、优化和评估涉及多维数组的数学表达式,这多是其它库开发商的一个挫折点。与scikit-learn 同样,Theano也很好地整合了NumPy库。GPU的透明使用使得Theano能够快速而且无错地设置,这对于那些初学者来讲很是重要。然而有些人更 多的是把它描述成一个研究工具,而不是看成产品来使用,所以要按需使用。

Theano最好的功能之一是拥有优秀的参考文档和大量的教程。事实上,多亏了此库的流行程度,使你在寻找资源的时候不会遇到太多的麻烦,好比如何获得你的模型以及运行等。

  • 擅长:神经网络和深度学习

  • 网址:http://deeplearning.net/software/theano/

  • Github:https://github.com/Theano/Theano

Pylearn2

大多数Pylearn2的功能实际上都是创建在Theano之上,因此它有一个很是坚实的基础。

据Pylearn2网址介绍:

Pylearn2不一样于scikit-learn,Pylearn2旨在提供极大的灵活性,使研究者几乎能够作任何想作的事情,而scikit-learn的目的是做为一个“黑盒”来工做,即便用户不了解实现也能产生很好的结果。

记住,Pylearn2在合适的时候会封装其它的库,如scikit-learn,因此在这里你不会获得100%用户编写的代码。然而,这确实很好,由于大多数错误已经被解决了。像Pylearn2这样的封装库在此列表中有很重要的地位。

  • 擅长:神经网络

  • 网址:http://deeplearning.net/software/pylearn2/

  • Github:http://github.com/lisa-lab/pylearn2

Pyevolve

神经网络研究更让人兴奋和不一样的领域之一是遗传算法。从根本上说,遗传算法只是一个模拟天然选择的启发式搜索过程。本质上它是在一些数据上测试神经 网络,并从一个拟合函数中获得网络性能的反馈。而后对网络迭代地作小的、随机的变化,再使用相同的数据进行测试。将具备高度拟合分数的网络做为输出,而后 使其做为下一个网络的父节点。

Pyevolve提供了一个用于创建和执行这类算法很棒的框架。做者曾表示,V0.6版本也支持遗传编程,因此在不久的未来,该框架将更倾向于做为一个进化的计算框架,而不仅是简单地遗传算法框架。

  • 擅长:遗传算法的神经网络

  • Github:https://github.com/perone/Pyevolve

NuPIC

Nupic是另外一个库,与标准的机器学习算法相比,它提供了一些不一样的功能。它基于一个称做层次时间记忆(HTM)的新皮层理论,。HTMs能够看做是一类神经网络,但在一些理论上有所不一样。

从根本上说,HTMs是一个分层的、基于时间的记忆系统,能够接受各类数据。这意味着会成为一个新的计算框架,来模仿咱们大脑中的记忆和计算是如何密不可分的。对于理论及其应用的详细说明,请参阅    白皮书

  • 擅长:HTMs

  • Github:http://github.com/numenta/nupic

Pattern

此库更像是一个“全套”库,由于它不只提供了一些机器学习算法,并且还提供了工具来帮助你收集和分析数据。数据挖掘部分能够帮助你收集来自谷歌、推 特和维基百科等网络服务的数据。它也有一个Web爬虫和HTML DOM解析器。“引入这些工具的优势就是:在同一个程序中收集和训练数据显得更加容易。

在文档中有个很好的例子,使用一堆推文来训练一个分类器,用来区分一个推文是“win”仍是“fail”。

from pattern.web import Twitter  
from pattern.en import tag  
from pattern.vector import KNN, count

twitter, knn = Twitter(), KNN()

for i in range(1, 3):  
    for tweet in twitter.search('#win OR #fail', start=i, count=100):
        s = tweet.text.lower()
        p = '#win' in s and 'WIN' or 'FAIL'
        v = tag(s)
        v = [word for word, pos in v if pos == 'JJ'] # JJ = adjective
        v = count(v) # {'sweet': 1}
        if v:
            knn.train(v, type=p)

print knn.classify('sweet potato burger')  
print knn.classify('stupid autocorrect')

首先使用twitter.search()经过标签'#win'和'#fail'来收集推文数据。而后利用从推文中提取的形容词来训练一个K-近邻(KNN)模型。通过足够的训练,你会获得一个分类器。仅仅只需15行代码,还不错。

  • 擅长:天然语言处理(NLP)和分类。

  • Github:http://github.com/clips/pattern

Caffe

Caffe是面向视觉应用领域的机器学习库。你可能会用它来建立深度神经网络,识别图像中的实体,甚至能够识别一个视觉样式。

Caffe提供GPU训练的无缝集成,当你训练图像时极力推荐使用此库。虽然Caffe彷佛主要是面向学术和研究的,但它对用于生产使用的训练模型一样有足够多的用途。

  • 擅长:神经网络/视觉深度学习

  • 网址:http://caffe.berkeleyvision.org/

  • Github:https://github.com/BVLC/caffe

其它知名库

这里还列出了一些其它面向Python的机器学习库。其中一些库与上述库有着相同的功能,而另外一些则有更窄小的目标或是更适合看成学习工具来使用。

Nilearn

Statsmodels

PyBrain (inactive)

Fuel

·     Github

Bob

skdata

MILK

IEPY

Quepy

Hebel

mlxtend

nolearn

·     Github

Ramp

Feature Forge

REP

Python-ELM

PythonXY

XCS

PyML

MLPY (inactive)

Orange

Monte

PYMVPA

MDP (inactive)

Shogun

PyMC

Gensim

Neurolab

FFnet (inactive)

LibSVM

Spearmint

Chainer

topik

Crab

CoverTree

breze

deap

neurolab

Spearmint

yahmm

·     Github

pydeep

Annoy

neon

sentiment

原文地址:The Best Machine Learning Libraries In Python(译者/刘帝伟 审校/刘翔宇 责编/仲浩)

译者简介: 刘帝伟,中南大学软件学院在读研究生,关注机器学习、数据挖掘及生物信息领域。

本文为CSDN编译整理,未经容许不得转载,如需转载请联系market#csdn.net(#换成@)

相关文章
相关标签/搜索