原标题: Python中最好用的机器学习库
Python部落(www.freelycode.com)组织翻译, 禁止转载
前言
毫无疑问,在过去几年,神经网络和机器学习已经成为科技领域里讨论最热的话题之一。很容易看出他们正在解决所有用户感兴趣的东西,例如语音识别、图像识别,甚至是音乐合成。基于此,在这篇文章里,我列了一个关于机器学习最好用的python库的表,并把它们列在下面.
在我看来,python是机器学习技术最好用的语言和工具,原因如下:
简单:由于它简单的语法和庞大的社区,现在python语言正成为新程序员首先选择的语言。
强大:有些东西简单并不意味着它不能胜任。Python是在数据科学家和网站开发者中最流行的语言。它的社区已经创造了你想做任何事情的库,包括机器学习。
大量的机器学习库:有许多专门用Python语言写的机器学习库。基于你的的需求、技术或定制需求,你可以在几百个库里面选择。
以上最后一点是最重要的。运行机器学习的算法是非常复杂的,它包括大量的数学计算。所以如果你自己写它们(或者实现他们)的话,那将会是一个非常困难的任务。幸运的是,有许多聪明和专注的人已经为我们做了这个困难工作,故我们可以专注于我们手头的任务。
这并不是一个非常详尽的表。因为有许多代码,所以在这儿我仅仅贴一些非常相关的或知名的库。现在,上清单。
最受欢迎的库
对于比较流行的库我会对其有一个比较简要的描述和它们擅长什么,对于比较值得参考的项目,在下一节会有一个更加完整的表。
Tensorflow
在列单里这是一个最新的神经网络库,几天前,Tensorflow刚刚被发布,它是一个高级神经网络库,能够帮助你构建网络架构,同时避免底层的细节。重点是可以让你把你的计算表示成数据流图,它更适合解决复杂的问题。
它主要是用C++写的,被python绑定,所以你不必担心这会牺牲性能。我最喜欢的特征之一就是它拥有灵活的架构,在所有使用相同API的桌面、服务器或者移动设备上,它允许你可以将它部署到一个或多个CPU或GPU上。假如有得话,这样的库也不会很多可以声称拥有这种能力。这是为“谷歌大脑”这个项目开发的,现在正在被全公司数百名程序员使用,它有能力创建有趣的解决方案,这一点是毫无疑问的。
和其它库一样,你可能不得不花费一些时间去学习一下它的API,但是你花费的这些时间应该是很值的。我仅仅花费了几分钟去了解它核心的功能,但是为了实现我的网络设计我却会花费更多的时间,而我没却完全搞定API。
适合:神经网络
scikit-learn
在所有的机器学习语言库中,Scikit-learn库绝对是最值得推荐的,或者之一。对于数据挖掘和数据分析,他有许多优点,这使它成为研究和开发人员的首选。
它建立在最流行的Numpy、Scipy和matplotlib库之上,所以对于已经使用这些库的人员来说,会对它有一种似曾相识的感觉。尽管,和下面列出的许多其它的库相比,这个库显得有点底层,但它往往扮演其它许多机器学习实现的基础。
适合:几乎一切
Theano
Theano是一个这样的机器学习库,它允许你去定义、优化和评估涉及多维数组的数学表达式。对于一些开发人员来说,使用其他库可能会有一点挫败感。与scikit-learn一样,Theano和Numpy也有紧密的联系。GPU的透明使用和设置使掌握Theano更快,这一点对于那些刚开始学习的人相当的重要。据一些使用它的人员来说,更愿把他用于研究使用,而不是产品使用。
最大的特点就是它拥有大量的文档和教程。由于网上相关库非常多,你会轻而易举的找到相关资源,它会告诉你如何让你的模型启动并运行。
适合:神经网络和深度学习
Pylearn2
Pylearn2大部分工能实际上是建立在在Theano之上,所以它有一个非常坚实的基础。
根据Pylearn2网站:
Pylearn2与scikit-learn的不同之处在于,Pylearn2旨在提供极大的灵活性,使研究者可以做几乎任何事情,而scikit-learn旨在作为一个可以产生良好结果的“黑匣子”,即使用户不理解其实现原理。
适合:神经网络
Pyevolve
和神经网络研究领域不同却更令人兴奋的领域之一就是空间遗传算法。遗传算法基本上就是一个模拟自然选择的搜索启发式过程。本质上它是测试一些数据的神经网络,并且从一个拟合函数中得到该网络性能的反馈。然后迭代,使网络做一些小的、随机的改变,然后继续使用相同的数据测试一遍。最后得出较高拟合程度的网络,然后把它作为新数据的母模型。
Pyevolve提供了一个很好的框架来构建和执行这样的算法。尽管作者说的v0.6框架也支持遗传编程,但是在不久的将来,相比于简单遗传算法框架,这个框架将更倾向于作为一个进化计算框架。
适合:神经网络和遗传算法
NuPIC
Nuplc是这样的一个库,它和标准的机器学习算法库不同,它会提供给你一些不同的功能。它以大脑皮层的理论为基础,称之为分层时间记忆(HTM)。你可以把HML看作是一种神经网络,但是有些理论不这样认为。
从根本上讲,HTMS是一个分层的、基于时间的记忆系统,它可以训练各种各样的数据。它是一个新的计算框架,模拟大脑记忆和计算是如何交织在一起的。如果你想看一个完整的理论,请自行查阅相关资料。
适合:HTMS
Pattern
可以说这是一个更完全的库,因为它不仅仅提供了一些机器学习算法,而且也提供有帮助你搜集和分析数据的工具。数据挖掘部分将帮助您从像谷歌、Twitter和维基百这样的web服务器上收集数据,它也有一个网络爬虫和HTML DOM解析器。拥有这些工具会是一件很美好的事情,它会使你在同一个程序收集和训练数据变得容易。
这儿给一个来自使用文档的一个很好的例子,它使用一堆推特数据去训练一个分类器,判断推文是否成功:
这是推特第一次使用twitter.search()搜集数据,通过标签“成功”和“失败”,然后使用K-最邻近算法(KNN)从提取推特形容词来训练。在训练次数足够的多时,你就得到了一个分类器。这样也不错,仅仅有15行代码。
适合:自然语言处理(NLP)、聚类和分类
Caffe
Cafffe是机器学习在视觉应用上的一个库。你可以用它创建一个深度神经网络,该神经网络可以识别一个图像对象,甚至识别一种图像风格。当你训练图像时,强烈推荐你使用它,它会和GPU之间有一个完美的融合。尽管这个库似乎主要用于学术研究,但是对于培训模型和生产,它应该也有大量的用处。
适合:神经网络/视觉深度学习
其它值得关注的库
在这个清单里面还有许多其它的Python机器学习库,有些会提供一些和上面库的一样的功能,另一些库功能相对较狭窄,更多的是被当作学习工具来用。
Nilearn
Statsmodels
PyBrain (inactive)
Fuel
Bob
Skdata
MILK
IEPY
Quepy
Hebel
Mlxtend
nolearn
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
pydeep
Annoy
neon
sentiment
英文原文: http://stackabuse.com/the-best-machine-learning-libraries-in-python/
责任编辑: