2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

責(zé)任編輯:editor007

作者:大數(shù)據(jù)文摘

2017-07-12 21:11:45

摘自:36kr

因為所有的python庫都是開源的,所以我們還列出了每個庫的提交次數(shù)、貢獻者人數(shù)和其他一些來自Github可以代表Python庫流行度的指標(biāo)。這個庫同樣提供大量為統(tǒng)計分析專門設(shè)計的畫圖方程,并且為更好的展示大數(shù)據(jù)進行了專門的調(diào)整。

  

大數(shù)據(jù)文摘作品,作者:Igor Bobriakov,編譯:朱璇、衛(wèi)青、萬如苑

導(dǎo)讀:隨著近幾年P(guān)ython已成為數(shù)據(jù)科學(xué)行業(yè)中大火的編程語言,我們將根據(jù)以往的經(jīng)驗來為大家總結(jié)一下數(shù)據(jù)科學(xué)家和工程師幾個最實用的python庫。如果你是正在學(xué)習(xí)Python的學(xué)生,也許根據(jù)這個表單能夠幫你更好地找到學(xué)習(xí)的重心。

因為所有的python庫都是開源的,所以我們還列出了每個庫的提交次數(shù)、貢獻者人數(shù)和其他一些來自Github可以代表Python庫流行度的指標(biāo)。

核心庫

1. NumPy(Github提交次數(shù):15980,貢獻者人數(shù):522)

在用Python處理科學(xué)任務(wù)時,我們常常需要使用Python的SciPy Stack。SciPyStack是一個專門為用Python處理科學(xué)計算而設(shè)計的軟件集(注意不要把SciPy Stack和SciPy庫搞混啦;SciPy庫只是SciPy Stack的一部分)。 讓我們來看看SciPy Stack里面都包括什么:SciPy Stack其實相當(dāng)龐大,包括了十幾個庫。其中NumPy庫是它的核心庫(特別是最重要的幾個庫)中的明星。

NumPy(來自NumericalPython)是構(gòu)建科學(xué)計算代碼集的最基礎(chǔ)的庫。 它提供了許多用Python進行n維數(shù)組和矩陣操作的功能。該庫提供了NumPy數(shù)組類型的數(shù)學(xué)運算向量化,可以改善性能,從而加快執(zhí)行速度。

2. SciPy(Github提交次數(shù):17213,貢獻者人數(shù):489)

SciPy是一個針對工程和科學(xué)庫。 再次提醒大家SciPyStack不等于SciPy庫: SciPy Stack包括線性代數(shù)、優(yōu)化、整合和統(tǒng)計等模塊,而 SciPy庫的主要功能是建立在NumPy基礎(chǔ)之上,因此它使用了大量的NumPy數(shù)組結(jié)構(gòu)。 SciPy庫通過其特定的子模塊提供高效的數(shù)學(xué)運算功能,例如數(shù)值積分、優(yōu)化等。 值得一提的是SciPy子模塊中的所有功能都附有詳細(xì)的文檔可供查閱。

3. Pandas(Github提交次數(shù):15089,貢獻者人數(shù):762)

Pandas是一個簡單直觀地應(yīng)用于“帶標(biāo)記的”和“關(guān)系性的”的數(shù)據(jù)的Python庫。它是探索數(shù)據(jù)的完美工具,能快速簡單地進行數(shù)據(jù)操作、聚合和可視化。

“數(shù)列(Series)”: 一維數(shù)組

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫“數(shù)據(jù)框(Data Frames)” :二維數(shù)組

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫例如,當(dāng)你想從這兩種數(shù)據(jù)結(jié)構(gòu)中得到一個新的數(shù)據(jù)框,把一個數(shù)列作為新的一行添加至數(shù)據(jù)框,你就能得到一個如圖所示的數(shù)據(jù)框。

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

下面列出的只是你可以用Pandas做的事情的一小部分:

●     輕松添加或刪除數(shù)據(jù)框中的數(shù)列

●     將其他數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)據(jù)框

●     處理缺失的數(shù)據(jù),比如用NaN表示它們

●     強大的高效分組功能

下圖:核心庫的Google Trends歷史記錄

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

圖片來源:trends.google.com

下圖:核心庫的GitHub下載請求歷史記錄

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

圖片來源:datascience.com/trends

可視化類

4. Matplotlib(Github提交次數(shù):21754,貢獻者人數(shù):588)

MatPlotlib是另一個SciPy Stack的核心庫。它是為能輕松生成簡單而強大的可視化圖標(biāo)而量身定制。 MatPlotlib是一個超酷的庫,它和NumPy,SciPy以及Pandas一起使Python成為像MatLab、Mathematica這樣的科學(xué)工具的強力競爭者。

然而,MatPlotlib是一個低端庫。這意味著您需要編寫更多的代碼才能達(dá)到高級的可視化效果;換句話說,和使用其他高級工具相比,使用MatPlotlib你需要投入更多的精力,但總體來說MatPlotlib還是值得一試的。

付出一些努力,您就用MatPlotlib做任何您想做的可視化圖表:

●     線路圖

●     散點圖

●     條形圖和直方圖

●     餅狀圖

●     莖圖

●     輪廓圖

●     矢量場圖

●     頻譜圖

Matplotlib還可用來創(chuàng)建標(biāo)簽、網(wǎng)格、圖例和許多其他樣式圖?;旧?,一切圖表都可以通過Matplotlib來定制。

Matplotlib庫還能支持不同的平臺,并能使用不同的GUI套件來展示所得到的可視化圖表。 各種IDE(比如IPython)都支持Matplotlib的功能。

除了Matplotlib,python還有一些其他庫能讓可視化變得更加容易。

下圖:使用Matplotlib制作的圖表展示

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫5. Seaborn(Github提交次數(shù):1699,貢獻者人數(shù):71)

Seaborn主要關(guān)注統(tǒng)計模型的可視化,包括熱分布圖(用來總結(jié)數(shù)據(jù)及描繪數(shù)據(jù)的整體分布)。 Seaborn是基于且高度依賴于Matplotlib的一個python庫。

下圖:使用Seaborn制作的圖表展示

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫6. Bokeh(Github提交次數(shù):15724,貢獻者人數(shù):223)

還有一個強大的可視化庫叫做Bokeh,其目的是互動式的可視化。 與Seaborn不同,Bokeh獨立于Matplotlib。 如上所述,Bokeh的賣點是互動性,它通過數(shù)據(jù)驅(qū)動文檔(d3.js)風(fēng)格的新式瀏覽器來呈現(xiàn)圖表。

下圖:使用Bokeh制作的圖表展示

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫7. Plotly(Github提交次數(shù):2486,貢獻者人數(shù):33)

Plotly是一個基于Web來構(gòu)建可視化的的工具箱。它有好幾種編程語言(其中包括Python)的API,并在plot.ly網(wǎng)站上提供一些強大的、開箱即用的圖表。 要使用Plotly,您先需要設(shè)置您的Plotly API密鑰。Plotly將在其服務(wù)器端處理圖表,并將結(jié)果在互聯(lián)網(wǎng)上發(fā)布。此外,它也提供了一種不需要使用其服務(wù)器和網(wǎng)絡(luò)的offline方法。

下圖:使用Plotly制作的圖表展示

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

下圖:python可視化庫的Google趨勢記錄

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

圖片來源:trends.google.com

機器學(xué)習(xí)類

8. SciKit-Learn(Github提交次數(shù):21793,貢獻者人數(shù):842)

Scikits是SciPy Stack的另一庫,它專為某些特殊功能(如圖像處理和機器學(xué)習(xí)輔助)而設(shè)計。對于機器學(xué)習(xí)而言,SciKit-Learn是其中最突出的一個是庫。SciKit-Learn建立在SciPy之上,并大量使用SciPy進行數(shù)學(xué)操作。

scikit-learn為常見的機器學(xué)習(xí)算法設(shè)計了一個簡潔通用的界面,使得在生產(chǎn)系統(tǒng)使用機器學(xué)習(xí)變的十分簡單。 該庫有著高質(zhì)量的代碼和文檔,性能高,容易使用,是使用Python進行機器學(xué)習(xí)的行業(yè)實踐標(biāo)準(zhǔn)。

深度學(xué)習(xí)類 - Keras / TensorFlow / Theano

在深度學(xué)習(xí)方面,Keras是最杰出最方便的Python庫之一。它可以在TensorFlow或者Theano之上運行。 下面讓我們來看一下它們的一些細(xì)節(jié):

9.Theano. (提交:25870次,貢獻者:300個)

首先我們來談?wù)凾heano.

Theano同Numpy類似,是一款定義多維矩陣并含有數(shù)學(xué)運算符和表達(dá)式的Python包。通過編譯這個庫可以在任何環(huán)境下有效的運行。由蒙特利爾大學(xué)的機器學(xué)習(xí)小組最初開發(fā),它主要用于滿足機器學(xué)習(xí)的需要。

很重要的一點是要注意到,Theano在低級別運算符上同NumPy緊密的結(jié)合在一起。并且這個庫優(yōu)化了GPU和CPU的使用,使其在處理大數(shù)據(jù)運算時的表現(xiàn)更為迅速。

效率和穩(wěn)定性的調(diào)整,使得即使是非常小的值也能得到更精確的結(jié)果,例如,即使給一個非常小的x值,計算log(1 + x)也能給出一個可是別的結(jié)果。

10.TensorFlow (提交:16785次,貢獻者:795個)

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

這是一個由Google的程序員開發(fā),為機器學(xué)習(xí)打造的數(shù)據(jù)流圖像計算開源庫。設(shè)計它的目的是為了滿足Google環(huán)境中對訓(xùn)練神經(jīng)網(wǎng)絡(luò)的迫切需求。其前身是DistBelief,一個基于神經(jīng)網(wǎng)絡(luò)的機器學(xué)習(xí)系統(tǒng)。而且TensorFlow并非嚴(yán)格受制于Google的框架——它可以廣泛地適用于多種真實世界的應(yīng)用中。

TensorFlow的主要特點是他的多層節(jié)點系統(tǒng),可以在大數(shù)據(jù)上快速的訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)。這點為Google的語音識別以及圖像識別提供了助力。

11.Keras (提交:3519次,貢獻者:428個)

最后,來看一看Keras,這是一個Python開源庫,用于在高級界面上建立神經(jīng)網(wǎng)絡(luò)。它簡約且直接,并擁有很強的延展性。它使用Theano 和 TensorFlow作為其終端,并且微軟正在試圖將CNTK(微軟自己的認(rèn)知工具包)結(jié)合進去成為一個新的終端。

這種簡約的設(shè)計方式旨通過緊湊型系統(tǒng)建立來實現(xiàn)更加快捷和簡單的操作。

Keras極易上手,并且在使用的過程中有很多快速原型可供參考。它完全用Python寫的庫,并且本身就非常高級。Keras非常模塊化并有很強的拓展性。盡管Keras簡易,有高層次定位。Keras仍然擁有足夠的深度和力量來進行嚴(yán)肅的建模。

Keras的核心理念是“層級”,一切都是圍繞著層級建立的。數(shù)據(jù)在張量(tensors)中處理好,第一層負(fù)責(zé)張量的輸入,最后一層負(fù)責(zé)輸出,而模型則在這之間建立。

谷歌Trends歷史記錄

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

trends.google.com

Github合并請求(pull requests)歷史紀(jì)錄

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

datascience.com/trends

自然語言處理

12.NLTK (提交:12449次,貢獻者:196個)

這個庫的名字是Natural Language Toolkit(自然語言工具)的縮寫。正如其名,它被用于由象征性與統(tǒng)計性自然語言處理的一般任務(wù)。NLTK旨在用于自然語言處理的教學(xué)與研究等的相關(guān)領(lǐng)域(語義學(xué),認(rèn)知人工智能科學(xué),等等)并現(xiàn)在它的使用受到了很大的關(guān)注。

NLTK在功能上允許很多操作,例如文字標(biāo)簽,歸類,標(biāo)記解釋,名稱識別;通過建立語料樹(corpus tree)來解釋句子的內(nèi)外聯(lián)系,詞根提取以及語義推理。所有這些內(nèi)置模塊都允許為不同的任務(wù)建造復(fù)雜研究系統(tǒng)。

13.Gensim (提交:2878次,貢獻者:179個)

這是一個開源的Python庫,為人們提供向量空間建模和主題建模的工具。這個庫的設(shè)計旨在高效處理大規(guī)模文本:除了允許內(nèi)存中處理,效率的主要來源在于廣泛使用NumPy的數(shù)據(jù)結(jié)構(gòu)和SciPy的運算符號,這兩個使用起來都十分的高效和簡單。

Gensim主要被用于未加工的非結(jié)構(gòu)化的數(shù)字文本。Gensim使用了諸如:分層狄式流程(hierarchical Dirichlet processes),潛在語義分析(latent semantic analysis),潛在狄氏分布(latent Dirichlet allocation)以及文檔頻次(tf-idf,term frequency-inverse document frequency),隨機映射,文字/文檔向量化(word2vec,document2vec)檢測多個文檔文字中詞語出現(xiàn)的頻次,通常被成為語料庫(corpus),之類的算法。這些算法都是非監(jiān)督性的——不需要任何的參數(shù),唯一的輸入就是語料庫。

谷歌Trends歷史記錄

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

圖片來源:trends.google.com

Github下載請求歷史紀(jì)錄

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫

圖片來源:datascience.com/trends

數(shù)據(jù)挖掘與統(tǒng)計

14.  Scrapy(提交:6325次,貢獻者:243個)

Scrapy是一個制做爬蟲程序的庫,也被稱作“蜘蛛機器人”(spider bots)。旨在提取結(jié)構(gòu)化數(shù)據(jù),例如從網(wǎng)頁聯(lián)絡(luò)信息,或網(wǎng)址鏈接。

它是開源并由Python寫的庫。正如其名,它最開始只是為了扒網(wǎng)頁所設(shè)計,然而現(xiàn)在他已經(jīng)進化成為一個擁有從API上獲取數(shù)據(jù)并且,用途廣泛的爬蟲程序。

這個庫一直貫徹其“不要在界面設(shè)計上重復(fù)你自己”的宗旨——鼓勵用戶寫出廣泛適用并可重復(fù)使用的代碼,從而制造強大的爬蟲軟件。

整個Scrapy的結(jié)構(gòu)都是圍繞蜘蛛類建造的,該類封裝了爬蟲跟蹤的一組指令。

15. Statsmodels (提交: 8960, 貢獻: 119)

你可能已經(jīng)從它的名字猜到了,statsmodels是一個讓用戶通過多種估計方式和統(tǒng)計模型,進行數(shù)據(jù)探索和統(tǒng)計分析的Python庫。

實用的特征有:統(tǒng)計描述,線性回歸模型,廣義線性模型,離散選擇模型,穩(wěn)健線性模型,時間序列分析以及多種回歸子。

這個庫同樣提供大量為統(tǒng)計分析專門設(shè)計的畫圖方程,并且為更好的展示大數(shù)據(jù)進行了專門的調(diào)整。

結(jié)論

以上這些就是由數(shù)據(jù)科學(xué)家和工程師們公認(rèn)的值得你一探究竟的Python庫。

這是每個庫在Github上動向的詳細(xì)數(shù)據(jù):

2017年數(shù)據(jù)科學(xué)15個最好用的Python庫當(dāng)然這不是最終極全面的總結(jié)。也有其他的庫和框架,同樣值得為了特殊的任務(wù)進行適當(dāng)?shù)年P(guān)注。一個很好的例子是另一個程序包SciKit,它重點針對一些特別的領(lǐng)域。像SciKit-Image就針對于圖像處理。

所以如果你還想到其他有用的庫的話,請在評論區(qū)與讀者一起分享吧。

原文鏈接

大數(shù)據(jù)文摘作品,作者:Igor Bobriakov,編譯:朱璇、衛(wèi)青、萬如苑

導(dǎo)讀:隨著近幾年P(guān)ython已成為數(shù)據(jù)科學(xué)行業(yè)中大火的編程語言,我們將根據(jù)以往的經(jīng)驗來為大家總結(jié)一下數(shù)據(jù)科學(xué)家和工程師幾個最實用的python庫。如果你是正在學(xué)習(xí)Python的學(xué)生,也許根據(jù)這個表單能夠幫你更好地找到學(xué)習(xí)的重心。

因為所有的python庫都是開源的,所以我們還列出了每個庫的提交次數(shù)、貢獻者人數(shù)和其他一些來自Github可以代表Python庫流行度的指標(biāo)。

核心庫

1. NumPy(Github提交次數(shù):15980,貢獻者人數(shù):522)

在用Python處理科學(xué)任務(wù)時,我們常常需要使用Python的SciPy Stack。SciPyStack是一個專門為用Python處理科學(xué)計算而設(shè)計的軟件集(注意不要把SciPy Stack和SciPy庫搞混啦;SciPy庫只是SciPy Stack的一部分)。 讓我們來看看SciPy Stack里面都包括什么:SciPy Stack其實相當(dāng)龐大,包括了十幾個庫。其中NumPy庫是它的核心庫(特別是最重要的幾個庫)中的明星。

NumPy(來自NumericalPython)是構(gòu)建科學(xué)計算代碼集的最基礎(chǔ)的庫。它提供了許多用Python進行n維數(shù)組和矩陣操作的功能。該庫提供了NumPy數(shù)組類型的數(shù)學(xué)運算向量化,可以改善性能,從而加快執(zhí)行速度。

2. SciPy(Github提交次數(shù):17213,貢獻者人數(shù):489)

SciPy是一個針對工程和科學(xué)庫。再次提醒大家SciPyStack不等于SciPy庫: SciPy Stack包括線性代數(shù)、優(yōu)化、整合和統(tǒng)計等模塊,而 SciPy庫的主要功能是建立在NumPy基礎(chǔ)之上,因此它使用了大量的NumPy數(shù)組結(jié)構(gòu)。 SciPy庫通過其特定的子模塊提供高效的數(shù)學(xué)運算功能,例如數(shù)值積分、優(yōu)化等。 值得一提的是SciPy子模塊中的所有功能都附有詳細(xì)的文檔可供查閱。

3. Pandas(Github提交次數(shù):15089,貢獻者人數(shù):762)

Pandas是一個簡單直觀地應(yīng)用于“帶標(biāo)記的”和“關(guān)系性的”的數(shù)據(jù)的Python庫。它是探索數(shù)據(jù)的完美工具,能快速簡單地進行數(shù)據(jù)操作、聚合和可視化。

“數(shù)列(Series)”: 一維數(shù)組

“數(shù)據(jù)框(Data Frames)” :二維數(shù)組

例如,當(dāng)你想從這兩種數(shù)據(jù)結(jié)構(gòu)中得到一個新的數(shù)據(jù)框,把一個數(shù)列作為新的一行添加至數(shù)據(jù)框,你就能得到一個如圖所示的數(shù)據(jù)框。

下面列出的只是你可以用Pandas做的事情的一小部分:

● 輕松添加或刪除數(shù)據(jù)框中的數(shù)列

● 將其他數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)據(jù)框

● 處理缺失的數(shù)據(jù),比如用NaN表示它們

● 強大的高效分組功能

下圖:核心庫的Google Trends歷史記錄

圖片來源:trends.google.com

下圖:核心庫的GitHub下載請求歷史記錄

圖片來源:datascience.com/trends

可視化類

4. Matplotlib(Github提交次數(shù):21754,貢獻者人數(shù):588)

MatPlotlib是另一個SciPy Stack的核心庫。它是為能輕松生成簡單而強大的可視化圖標(biāo)而量身定制。 MatPlotlib是一個超酷的庫,它和NumPy,SciPy以及Pandas一起使Python成為像MatLab、Mathematica這樣的科學(xué)工具的強力競爭者。

然而,MatPlotlib是一個低端庫。這意味著您需要編寫更多的代碼才能達(dá)到高級的可視化效果;換句話說,和使用其他高級工具相比,使用MatPlotlib你需要投入更多的精力,但總體來說MatPlotlib還是值得一試的。

付出一些努力,您就用MatPlotlib做任何您想做的可視化圖表:

● 線路圖

● 散點圖

● 條形圖和直方圖

● 餅狀圖

● 莖圖

● 輪廓圖

● 矢量場圖

● 頻譜圖

Matplotlib還可用來創(chuàng)建標(biāo)簽、網(wǎng)格、圖例和許多其他樣式圖?;旧?,一切圖表都可以通過Matplotlib來定制。

Matplotlib庫還能支持不同的平臺,并能使用不同的GUI套件來展示所得到的可視化圖表。 各種IDE(比如IPython)都支持Matplotlib的功能。

除了Matplotlib,python還有一些其他庫能讓可視化變得更加容易。

下圖:使用Matplotlib制作的圖表展示

5. Seaborn(Github提交次數(shù):1699,貢獻者人數(shù):71)

Seaborn主要關(guān)注統(tǒng)計模型的可視化,包括熱分布圖(用來總結(jié)數(shù)據(jù)及描繪數(shù)據(jù)的整體分布)。 Seaborn是基于且高度依賴于Matplotlib的一個python庫。

下圖:使用Seaborn制作的圖表展示

6. Bokeh(Github提交次數(shù):15724,貢獻者人數(shù):223)

還有一個強大的可視化庫叫做Bokeh,其目的是互動式的可視化。 與Seaborn不同,Bokeh獨立于Matplotlib。 如上所述,Bokeh的賣點是互動性,它通過數(shù)據(jù)驅(qū)動文檔(d3.js)風(fēng)格的新式瀏覽器來呈現(xiàn)圖表。

下圖:使用Bokeh制作的圖表展示

7. Plotly(Github提交次數(shù):2486,貢獻者人數(shù):33)

Plotly是一個基于Web來構(gòu)建可視化的的工具箱。它有好幾種編程語言(其中包括Python)的API,并在plot.ly網(wǎng)站上提供一些強大的、開箱即用的圖表。 要使用Plotly,您先需要設(shè)置您的Plotly API密鑰。Plotly將在其服務(wù)器端處理圖表,并將結(jié)果在互聯(lián)網(wǎng)上發(fā)布。此外,它也提供了一種不需要使用其服務(wù)器和網(wǎng)絡(luò)的offline方法。

下圖:使用Plotly制作的圖表展示

下圖:python可視化庫的Google趨勢記錄

圖片來源:trends.google.com

機器學(xué)習(xí)類

8. SciKit-Learn(Github提交次數(shù):21793,貢獻者人數(shù):842)

Scikits是SciPy Stack的另一庫,它專為某些特殊功能(如圖像處理和機器學(xué)習(xí)輔助)而設(shè)計。對于機器學(xué)習(xí)而言,SciKit-Learn是其中最突出的一個是庫。SciKit-Learn建立在SciPy之上,并大量使用SciPy進行數(shù)學(xué)操作。

scikit-learn為常見的機器學(xué)習(xí)算法設(shè)計了一個簡潔通用的界面,使得在生產(chǎn)系統(tǒng)使用機器學(xué)習(xí)變的十分簡單。該庫有著高質(zhì)量的代碼和文檔,性能高,容易使用,是使用Python進行機器學(xué)習(xí)的行業(yè)實踐標(biāo)準(zhǔn)。

深度學(xué)習(xí)類 - Keras / TensorFlow / Theano

在深度學(xué)習(xí)方面,Keras是最杰出最方便的Python庫之一。它可以在TensorFlow或者Theano之上運行。 下面讓我們來看一下它們的一些細(xì)節(jié):

9.Theano. (提交:25870次,貢獻者:300個)

首先我們來談?wù)凾heano.

Theano同Numpy類似,是一款定義多維矩陣并含有數(shù)學(xué)運算符和表達(dá)式的Python包。通過編譯這個庫可以在任何環(huán)境下有效的運行。由蒙特利爾大學(xué)的機器學(xué)習(xí)小組最初開發(fā),它主要用于滿足機器學(xué)習(xí)的需要。

很重要的一點是要注意到,Theano在低級別運算符上同NumPy緊密的結(jié)合在一起。并且這個庫優(yōu)化了GPU和CPU的使用,使其在處理大數(shù)據(jù)運算時的表現(xiàn)更為迅速。

效率和穩(wěn)定性的調(diào)整,使得即使是非常小的值也能得到更精確的結(jié)果,例如,即使給一個非常小的x值,計算log(1 + x)也能給出一個可是別的結(jié)果。

10.TensorFlow (提交:16785次,貢獻者:795個)

這是一個由Google的程序員開發(fā),為機器學(xué)習(xí)打造的數(shù)據(jù)流圖像計算開源庫。設(shè)計它的目的是為了滿足Google環(huán)境中對訓(xùn)練神經(jīng)網(wǎng)絡(luò)的迫切需求。其前身是DistBelief,一個基于神經(jīng)網(wǎng)絡(luò)的機器學(xué)習(xí)系統(tǒng)。而且TensorFlow并非嚴(yán)格受制于Google的框架——它可以廣泛地適用于多種真實世界的應(yīng)用中。

TensorFlow的主要特點是他的多層節(jié)點系統(tǒng),可以在大數(shù)據(jù)上快速的訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)。這點為Google的語音識別以及圖像識別提供了助力。

11.Keras (提交:3519次,貢獻者:428個)

最后,來看一看Keras,這是一個Python開源庫,用于在高級界面上建立神經(jīng)網(wǎng)絡(luò)。它簡約且直接,并擁有很強的延展性。它使用Theano 和 TensorFlow作為其終端,并且微軟正在試圖將CNTK(微軟自己的認(rèn)知工具包)結(jié)合進去成為一個新的終端。

這種簡約的設(shè)計方式旨通過緊湊型系統(tǒng)建立來實現(xiàn)更加快捷和簡單的操作。

Keras極易上手,并且在使用的過程中有很多快速原型可供參考。它完全用Python寫的庫,并且本身就非常高級。Keras非常模塊化并有很強的拓展性。盡管Keras簡易,有高層次定位。Keras仍然擁有足夠的深度和力量來進行嚴(yán)肅的建模。

Keras的核心理念是“層級”,一切都是圍繞著層級建立的。數(shù)據(jù)在張量(tensors)中處理好,第一層負(fù)責(zé)張量的輸入,最后一層負(fù)責(zé)輸出,而模型則在這之間建立。

谷歌Trends歷史記錄

trends.google.com

Github合并請求(pull requests)歷史紀(jì)錄

datascience.com/trends

自然語言處理

12.NLTK (提交:12449次,貢獻者:196個)

這個庫的名字是Natural Language Toolkit(自然語言工具)的縮寫。正如其名,它被用于由象征性與統(tǒng)計性自然語言處理的一般任務(wù)。NLTK旨在用于自然語言處理的教學(xué)與研究等的相關(guān)領(lǐng)域(語義學(xué),認(rèn)知人工智能科學(xué),等等)并現(xiàn)在它的使用受到了很大的關(guān)注。

NLTK在功能上允許很多操作,例如文字標(biāo)簽,歸類,標(biāo)記解釋,名稱識別;通過建立語料樹(corpus tree)來解釋句子的內(nèi)外聯(lián)系,詞根提取以及語義推理。所有這些內(nèi)置模塊都允許為不同的任務(wù)建造復(fù)雜研究系統(tǒng)。

13.Gensim (提交:2878次,貢獻者:179個)

這是一個開源的Python庫,為人們提供向量空間建模和主題建模的工具。這個庫的設(shè)計旨在高效處理大規(guī)模文本:除了允許內(nèi)存中處理,效率的主要來源在于廣泛使用NumPy的數(shù)據(jù)結(jié)構(gòu)和SciPy的運算符號,這兩個使用起來都十分的高效和簡單。

Gensim主要被用于未加工的非結(jié)構(gòu)化的數(shù)字文本。Gensim使用了諸如:分層狄式流程(hierarchical Dirichlet processes),潛在語義分析(latent semantic analysis),潛在狄氏分布(latent Dirichlet allocation)以及文檔頻次(tf-idf,term frequency-inverse document frequency),隨機映射,文字/文檔向量化(word2vec,document2vec)檢測多個文檔文字中詞語出現(xiàn)的頻次,通常被成為語料庫(corpus),之類的算法。這些算法都是非監(jiān)督性的——不需要任何的參數(shù),唯一的輸入就是語料庫。

谷歌Trends歷史記錄

圖片來源:trends.google.com

Github下載請求歷史紀(jì)錄

圖片來源:datascience.com/trends

數(shù)據(jù)挖掘與統(tǒng)計

14.Scrapy(提交:6325次,貢獻者:243個)

Scrapy是一個制做爬蟲程序的庫,也被稱作“蜘蛛機器人”(spider bots)。旨在提取結(jié)構(gòu)化數(shù)據(jù),例如從網(wǎng)頁聯(lián)絡(luò)信息,或網(wǎng)址鏈接。

它是開源并由Python寫的庫。正如其名,它最開始只是為了扒網(wǎng)頁所設(shè)計,然而現(xiàn)在他已經(jīng)進化成為一個擁有從API上獲取數(shù)據(jù)并且,用途廣泛的爬蟲程序。

這個庫一直貫徹其“不要在界面設(shè)計上重復(fù)你自己”的宗旨——鼓勵用戶寫出廣泛適用并可重復(fù)使用的代碼,從而制造強大的爬蟲軟件。

整個Scrapy的結(jié)構(gòu)都是圍繞蜘蛛類建造的,該類封裝了爬蟲跟蹤的一組指令。

15. Statsmodels (提交: 8960, 貢獻: 119)

你可能已經(jīng)從它的名字猜到了,statsmodels是一個讓用戶通過多種估計方式和統(tǒng)計模型,進行數(shù)據(jù)探索和統(tǒng)計分析的Python庫。

實用的特征有:統(tǒng)計描述,線性回歸模型,廣義線性模型,離散選擇模型,穩(wěn)健線性模型,時間序列分析以及多種回歸子。

這個庫同樣提供大量為統(tǒng)計分析專門設(shè)計的畫圖方程,并且為更好的展示大數(shù)據(jù)進行了專門的調(diào)整。

結(jié)論

以上這些就是由數(shù)據(jù)科學(xué)家和工程師們公認(rèn)的值得你一探究竟的Python庫。

這是每個庫在Github上動向的詳細(xì)數(shù)據(jù):

當(dāng)然這不是最終極全面的總結(jié)。也有其他的庫和框架,同樣值得為了特殊的任務(wù)進行適當(dāng)?shù)年P(guān)注。一個很好的例子是另一個程序包SciKit,它重點針對一些特別的領(lǐng)域。像SciKit-Image就針對于圖像處理。

所以如果你還想到其他有用的庫的話,請在評論區(qū)與讀者一起分享吧。

原文鏈接

鏈接已復(fù)制,快去分享吧

企業(yè)網(wǎng)版權(quán)所有?2010-2024 京ICP備09108050號-6京公網(wǎng)安備 11010502049343號