最好的Python机器学习库

本文涉及的产品
模型训练 PAI-DLC,5000CU*H 3个月
交互式建模 PAI-DSW,5000CU*H 3个月
模型在线服务 PAI-EAS,A10/V100等 500元 1个月
简介:

引言

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

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

语言简单:如今,Python成为新手程序员首选语言的主要原因是它拥有简单的语法和庞大的社区。

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

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

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

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

最受欢迎的库

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

Tensorflow

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

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

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

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

擅长:神经网络

网址:http://tensorflow.org/

Github: https://github.com/tensorflow/tensorflow

scikit-learn

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

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

擅长:非常多

网址:http://scikit-learn.org/

Github: http://github.com/scikit-learn/scikit-learn

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”。

首先使用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、Bob、skdata、MILK、IEPY、Quepy、Hebel、mlxtend、nolearn、Ramp、Feature Forge、REP、Python-ELM、PythonXY、XCS、PyML、MLPY (inactive)、Orange、Monte、PYMVPA、MDP (inactive)等。


本文作者:Scott Robinson

来源:51CTO

相关实践学习
机器学习算法(一): 基于逻辑回归的分类预测
基于逻辑回归的分类预测。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
16天前
|
机器学习/深度学习 数据可视化 搜索推荐
Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。
【7月更文挑战第5天】Python在社交媒体分析中扮演关键角色,借助Pandas、NumPy、Matplotlib等工具处理、可视化数据及进行机器学习。流程包括数据获取、预处理、探索、模型选择、评估与优化,以及结果可视化。示例展示了用户行为、话题趋势和用户画像分析。Python的丰富生态使得社交媒体洞察变得高效。通过学习和实践,可以提升社交媒体分析能力。
30 1
|
20天前
|
机器学习/深度学习 人工智能 算法
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器('迪吉里杜管', '铃鼓', '木琴', '手风琴', '阿尔卑斯号角', '风笛', '班卓琴', '邦戈鼓', '卡萨巴', '响板', '单簧管', '古钢琴', '手风琴(六角形)', '鼓', '扬琴', '长笛', '刮瓜', '吉他', '口琴', '竖琴', '沙槌', '陶笛', '钢琴', '萨克斯管', '锡塔尔琴', '钢鼓', '长号', '小号', '大号', '小提琴')的图像数据集进行训练,得到一个训练精度较高的模型,并将其
33 0
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
|
3天前
|
机器学习/深度学习 数据采集 数据挖掘
深入Scikit-learn:掌握Python最强大的机器学习库
【7月更文第18天】在当今数据驱动的世界中,机器学习已成为解锁数据潜力的关键。Python凭借其简洁的语法和丰富的库生态,成为数据科学家和机器学习工程师的首选语言。而在Python的众多机器学习库中,Scikit-learn以其全面、高效、易用的特点,被誉为机器学习领域的“瑞士军刀”。本文旨在深入探讨Scikit-learn的核心概念、实用功能,并通过实战代码示例,带你领略其强大之处。
30 12
|
28天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
178 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
11天前
|
机器学习/深度学习 监控 算法
Python数据分析与机器学习在金融风控中的应用
Python数据分析与机器学习在金融风控中的应用
39 12
|
13天前
|
机器学习/深度学习 数据采集 搜索推荐
Python数据分析与机器学习在电子商务推荐系统中的应用
Python数据分析与机器学习在电子商务推荐系统中的应用
34 5
|
13天前
|
机器学习/深度学习 算法 Python
【Python】已完美解决:机器学习填补数值型缺失值时报错)TypeError: init() got an unexpected keyword argument ‘axis’,
【Python】已完美解决:机器学习填补数值型缺失值时报错)TypeError: init() got an unexpected keyword argument ‘axis’,
13 1
|
16天前
|
机器学习/深度学习 算法 文件存储
使用Python实现深度学习模型:神经架构搜索与自动机器学习
【7月更文挑战第5天】 使用Python实现深度学习模型:神经架构搜索与自动机器学习
30 2
|
25天前
|
机器学习/深度学习 算法 数据挖掘
Python机器学习10大经典算法的讲解和示例
为了展示10个经典的机器学习算法的最简例子,我将为每个算法编写一个小的示例代码。这些算法将包括线性回归、逻辑回归、K-最近邻(KNN)、支持向量机(SVM)、决策树、随机森林、朴素贝叶斯、K-均值聚类、主成分分析(PCA)、和梯度提升(Gradient Boosting)。我将使用常见的机器学习库,如 scikit-learn,numpy 和 pandas 来实现这些算法。
|
1月前
|
机器学习/深度学习 数据采集 算法
【机器学习】Scikit-Learn:Python机器学习的瑞士军刀
【机器学习】Scikit-Learn:Python机器学习的瑞士军刀
46 3