您的位置 首页 新品

Python语言下的机器学习库

Python是最好的编程语言之一,在科学计算中用途广泛:计算机视觉、人工智能、数学、天文等。它同样适用于机器学习也是意料之中的事。当然,它也有些缺点;其中一个是工具和库过于分散。如果你是拥有u

  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机器学习包,经过谈论让咱们知道。咱们很愿意将其添加到文章中。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/181203.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部