一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python語言下的機(jī)器學(xué)習(xí)庫

 戴佳霖 2017-06-30

這篇文章的目的就是列舉并描述Python可用的最有用的機(jī)器學(xué)習(xí)工具和庫。這個(gè)列表中,我們不要求這些庫是用Python寫的,只要有Python接口就夠了。我們在最后也有一小節(jié)關(guān)于深度學(xué)習(xí)(Deep Learning)的內(nèi)容。

Python是最好的編程語言之一,在科學(xué)計(jì)算中用途廣泛:計(jì)算機(jī)視覺、人工智能、數(shù)學(xué)、天文等。它同樣適用于機(jī)器學(xué)習(xí)也是意料之中的事。

當(dāng)然,它也有些缺點(diǎn);其中一個(gè)是工具和庫過于分散。如果你是擁有unix思維(unix-minded)的人,你會覺得每個(gè)工具只做一件事并且把它做好是非常方便的。但是你也需要知道不同庫和工具的優(yōu)缺點(diǎn),這樣在構(gòu)建系統(tǒng)時(shí)才能做出合理的決策。工具本身不能改善系統(tǒng)或產(chǎn)品,但是使用正確的工具,我們可以工作得更高效,生產(chǎn)率更高。因此了解正確的工具,對你的工作領(lǐng)域是非常重要的。

這篇文章的目的就是列舉并描述Python可用的最有用的機(jī)器學(xué)習(xí)工具和庫。這個(gè)列表中,我們不要求這些庫是用Python寫的,只要有Python接口就夠了。我們在最后也有一小節(jié)關(guān)于深度學(xué)習(xí)(Deep Learning)的內(nèi)容,因?yàn)樗罱参讼喈?dāng)多的關(guān)注。

我們的目的不是列出Python中所有機(jī)器學(xué)習(xí)庫(搜索“機(jī)器學(xué)習(xí)”時(shí)Python包索引(PyPI)返回了139個(gè)結(jié)果),而是列出我們所知的有用并且維護(hù)良好的那些。另外,盡管有些模塊可以用于多種機(jī)器學(xué)習(xí)任務(wù),我們只列出主要焦點(diǎn)在機(jī)器學(xué)習(xí)的庫。比如,雖然Scipy包含一些聚類算法,但是它的主焦點(diǎn)不是機(jī)器學(xué)習(xí)而是全面的科學(xué)計(jì)算工具集。因此我們排除了Scipy(盡管我們也使用它!)。

另一個(gè)需要提到的是,我們同樣會根據(jù)與其他科學(xué)計(jì)算庫的集成效果來評估這些庫,因?yàn)闄C(jī)器學(xué)習(xí)(有監(jiān)督的或者無監(jiān)督的)也是數(shù)據(jù)處理系統(tǒng)的一部分。如果你使用的庫與數(shù)據(jù)處理系統(tǒng)其他的庫不相配,你就要花大量時(shí)間創(chuàng)建不同庫之間的中間層。在工具集中有個(gè)很棒的庫很重要,但這個(gè)庫能與其他庫良好集成也同樣重要。

如果你擅長其他語言,但也想使用Python包,我們也簡單地描述如何與Python進(jìn)行集成來使用這篇文章列出的庫。

Scikit-Learn

Scikit Learn是我們在CB Insights選用的機(jī)器學(xué)習(xí)工具。我們用它進(jìn)行分類、特征選擇、特征提取和聚集。我們最愛的一點(diǎn)是它擁有易用的一致性API,并提供了很多開箱可用的求值、診斷和交叉驗(yàn)證方法(是不是聽起來很熟悉?Python也提供了“電池已備(譯注:指開箱可用)”的方法)。錦上添花的是它底層使用Scipy數(shù)據(jù)結(jié)構(gòu),與Python中其余使用Scipy、Numpy、Pandas和Matplotlib進(jìn)行科學(xué)計(jì)算的部分適應(yīng)地很好。因此,如果你想可視化分類器的性能(比如,使用精確率與反饋率(precision-recall)圖表,或者接收者操作特征(Receiver Operating Characteristics,ROC)曲線),Matplotlib可以幫助進(jìn)行快速可視化??紤]到花在清理和構(gòu)造數(shù)據(jù)的時(shí)間,使用這個(gè)庫會非常方便,因?yàn)樗梢跃o密集成到其他科學(xué)計(jì)算包上。

另外,它還包含有限的自然語言處理特征提取能力,以及詞袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency算法)、預(yù)處理(停用詞/stop-words,自定義預(yù)處理,分析器)。此外,如果你想快速對小數(shù)據(jù)集(toy dataset)進(jìn)行不同基準(zhǔn)測試的話,它自帶的數(shù)據(jù)集模塊提供了常見和有用的數(shù)據(jù)集。你還可以根據(jù)這些數(shù)據(jù)集創(chuàng)建自己的小數(shù)據(jù)集,這樣在將模型應(yīng)用到真實(shí)世界中之前,你可以按照自己的目的來檢驗(yàn)?zāi)P褪欠穹掀谕?。對參?shù)最優(yōu)化和參數(shù)調(diào)整,它也提供了網(wǎng)格搜索和隨機(jī)搜索。如果沒有強(qiáng)大的社區(qū)支持,或者維護(hù)得不好,這些特性都不可能實(shí)現(xiàn)。我們期盼它的第一個(gè)穩(wěn)定發(fā)布版。

Statsmodels

Statsmodels是另一個(gè)聚焦在統(tǒng)計(jì)模型上的強(qiáng)大的庫,主要用于預(yù)測性和探索性分析。如果你想擬合線性模型、進(jìn)行統(tǒng)計(jì)分析,或者預(yù)測性建模,那么Statsmodels非常適合。它提供的統(tǒng)計(jì)測試相當(dāng)全面,覆蓋了大部分情況的驗(yàn)證任務(wù)。如果你是R或者S的用戶,它也提供了某些統(tǒng)計(jì)模型的R語法。它的模型同時(shí)也接受Numpy數(shù)組和Pandas數(shù)據(jù)幀,讓中間數(shù)據(jù)結(jié)構(gòu)成為過去!

PyMC

PyMC是做貝葉斯曲線的工具。它包含貝葉斯模型、統(tǒng)計(jì)分布和模型收斂的診斷工具,也包含一些層次模型。如果想進(jìn)行貝葉斯分析,你應(yīng)該看看。

Shogun

Shogun是個(gè)聚焦在支持向量機(jī)(Support Vector Machines, SVM)上的機(jī)器學(xué)習(xí)工具箱,用C++編寫。它正處于積極開發(fā)和維護(hù)中,提供了Python接口,也是文檔化最好的接口。但是,相對于Scikit-learn,我們發(fā)現(xiàn)它的API比較難用。而且,也沒提供很多開箱可用的診斷和求值算法。但是,速度是個(gè)很大的優(yōu)勢。

Gensim

Gensim被定義為“人們的主題建模工具(topic modeling for humans)”。它的主頁上描述,其焦點(diǎn)是狄利克雷劃分(Latent Dirichlet Allocation, LDA)及變體。不同于其他包,它支持自然語言處理,能將NLP和其他機(jī)器學(xué)習(xí)算法更容易組合在一起。如果你的領(lǐng)域在NLP,并想進(jìn)行聚集和基本的分類,你可以看看。目前,它們引入了Google的基于遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network)的文本表示法word2vec。這個(gè)庫只使用Python編寫。

Orange

Orange是這篇文章列舉的所有庫中唯一帶有圖形用戶界面(Graphical User Interface,GUI)的。對分類、聚集和特征選擇方法而言,它是相當(dāng)全面的,還有些交叉驗(yàn)證的方法。在某些方面比Scikit-learn還要好(分類方法、一些預(yù)處理能力),但與其他科學(xué)計(jì)算系統(tǒng)(Numpy, Scipy, Matplotlib, Pandas)的適配上比不上Scikit-learn。

但是,包含GUI是個(gè)很重要的優(yōu)勢。你可以可視化交叉驗(yàn)證的結(jié)果、模型和特征選擇方法(某些功能需要安裝Graphviz)。對大多數(shù)算法,Orange都有自己的數(shù)據(jù)結(jié)構(gòu),所以你需要將數(shù)據(jù)包裝成Orange兼容的數(shù)據(jù)結(jié)構(gòu),這使得其學(xué)習(xí)曲線更陡。

PyMVPA

PyMVPA是另一個(gè)統(tǒng)計(jì)學(xué)習(xí)庫,API上與Scikit-learn很像。包含交叉驗(yàn)證和診斷工具,但是沒有Scikit-learn全面。

深度學(xué)習(xí)

盡管深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個(gè)子節(jié),我們在這里創(chuàng)建單獨(dú)一節(jié)的原因是,它最新吸引了Google和Facebook人才招聘部門的很多注意。

Theano

Theano是最成熟的深度學(xué)習(xí)庫。它提供了不錯(cuò)的數(shù)據(jù)結(jié)構(gòu)(張量,tensor)來表示神經(jīng)網(wǎng)絡(luò)的層,對線性代數(shù)來說很高效,與Numpy的數(shù)組類似。需要注意的是,它的API可能不是很直觀,用戶的學(xué)習(xí)曲線會很高。有很多基于Theano的庫都在利用其數(shù)據(jù)結(jié)構(gòu)。它同時(shí)支持開箱可用的GPU編程。

PyLearn2

還有另外一個(gè)基于Theano的庫,PyLearn2,它給Theano引入了模塊化和可配置性,你可以通過不同的配置文件來創(chuàng)建神經(jīng)網(wǎng)絡(luò),這樣嘗試不同的參數(shù)會更容易??梢哉f,如果分離神經(jīng)網(wǎng)絡(luò)的參數(shù)和屬性到配置文件,它的模塊化能力更強(qiáng)大。

Decaf

Decaf是最近由UC Berkeley發(fā)布的深度學(xué)習(xí)庫,在Imagenet分類挑戰(zhàn)中測試發(fā)現(xiàn),其神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)是很先進(jìn)的(state of art)。

Nolearn

如果你想在深度學(xué)習(xí)中也能使用優(yōu)秀的Scikit-learn庫API,封裝了Decaf的Nolearn會讓你能夠更輕松地使用它。它是對Decaf的包裝,與Scikit-learn兼容(大部分),使得Decaf更不可思議。

OverFeat

OverFeat是最近貓vs.狗(kaggle挑戰(zhàn))的勝利者,它使用C++編寫,也包含一個(gè)Python包裝器(還有Matlab和Lua)。通過Torch庫使用GPU,所以速度很快。也贏得了ImageNet分類的檢測和本地化挑戰(zhàn)。如果你的領(lǐng)域是計(jì)算機(jī)視覺,你可能需要看看。

Hebel

Hebel是另一個(gè)帶有GPU支持的神經(jīng)網(wǎng)絡(luò)庫,開箱可用。你可以通過YAML文件(與Pylearn2類似)決定神經(jīng)網(wǎng)絡(luò)的屬性,提供了將神級網(wǎng)絡(luò)和代碼友好分離的方式,可以快速地運(yùn)行模型。由于開發(fā)不久,就深度和廣度上說,文檔很匱乏。就神經(jīng)網(wǎng)絡(luò)模型來說,也是有局限的,因?yàn)橹恢С忠环N神經(jīng)網(wǎng)絡(luò)模型(正向反饋,feed-forward)。但是,它是用純Python編寫,將會是很友好的庫,因?yàn)榘芏鄬?shí)用函數(shù),比如調(diào)度器和監(jiān)視器,其他庫中我們并沒有發(fā)現(xiàn)這些功能。

Neurolab

NeuroLab是另一個(gè)API友好(與Matlabapi類似)的神經(jīng)網(wǎng)絡(luò)庫。與其他庫不同,它包含遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)實(shí)現(xiàn)的不同變體。如果你想使用RNN,這個(gè)庫是同類API中最好的選擇之一。

與其他語言集成

你不了解Python但是很擅長其他語言?不要絕望!Python(還有其他)的一個(gè)強(qiáng)項(xiàng)就是它是一個(gè)完美的膠水語言,你可以使用自己常用的編程語言,通過Python來訪問這些庫。以下適合各種編程語言的包可以用于將其他語言與Python組合到一起:

  • R -> RPython

  • Matlab -> matpython

  • Java -> Jython

  • Lua -> Lunatic Python

  • Julia -> PyCall.jl

不活躍的庫

這些庫超過一年沒有發(fā)布任何更新,我們列出是因?yàn)槟阌锌赡軙杏?,但是這些庫不太可能會進(jìn)行BUG修復(fù),特別是未來進(jìn)行增強(qiáng)。

  • MDP

  • MlPy

  • FFnet

  • PyBrain

如果我們遺漏了你最愛的Python機(jī)器學(xué)習(xí)包,通過評論讓我們知道。我們很樂意將其添加到文章中。




編譯:伯樂在線

出處:Python開發(fā)者

鏈接:https://mp.weixin.qq.com/s/YIEONrJaPddp0CeCthRx6w


    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    有坂深雪中文字幕亚洲中文| 东京热电东京热一区二区三区| 天海翼精品久久中文字幕| 青青操日老女人的穴穴| 日本免费熟女一区二区三区| 久久精品一区二区少妇| 日本少妇aa特黄大片| 沐浴偷拍一区二区视频| 国产传媒高清视频在线| 毛片在线观看免费日韩| 又黄又色又爽又免费的视频| 国产精品视频久久一区| 久久99这里只精品热在线| 99福利一区二区视频| 老鸭窝精彩从这里蔓延| 日韩免费午夜福利视频| 欧美色婷婷综合狠狠爱| 少妇成人精品一区二区| 欧美人妻少妇精品久久性色| 亚洲黄香蕉视频免费看| 日本高清一道一二三区四五区| 日本免费一级黄色录像 | 国产精品刮毛视频不卡| 91人人妻人人爽人人狠狠| 国产精品欧美在线观看| 久久国产成人精品国产成人亚洲| 在线免费国产一区二区三区| 国产成人精品国内自产拍| 亚洲中文字幕视频在线观看| 欧美日韩国产成人高潮| 色综合久久超碰色婷婷| 亚洲国产日韩欧美三级| 国产又色又爽又黄又大| 91欧美一区二区三区| 久草视频这里只是精品| 国产精品国产亚洲区久久| 日韩人妻精品免费一区二区三区| 福利在线午夜绝顶三级| 国产欧美日产中文一区 | 激情五月天免费在线观看| 久久国产青偷人人妻潘金莲|