轉(zhuǎn)帖|使用教程|編輯:我只采一朵|2017-06-23 11:32:37.000|閱讀 232 次
概述:近年來,Python 在數(shù)據(jù)科學(xué)行業(yè)扮演著越來越重要的角色。因此,我根據(jù)近來的使用體驗(yàn),在本文中列出了對數(shù)據(jù)科學(xué)家、工程師們最有用的那些庫。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
近年來,Python 在數(shù)據(jù)科學(xué)行業(yè)扮演著越來越重要的角色。因此,我根據(jù)近來的使用體驗(yàn),在本文中列出了對數(shù)據(jù)科學(xué)家、工程師們最有用的那些庫。
由于這些庫都開源了,我們從Github上引入了提交數(shù),貢獻(xiàn)者數(shù)和其他指標(biāo),這可以作為庫流行程度的參考指標(biāo)。
當(dāng)開始處理Python中的科學(xué)任務(wù),Python的SciPy Stack肯定可以提供幫助,它是專門為Python中科學(xué)計(jì)算而設(shè)計(jì)的軟件集合(不要混淆SciPy庫,它是SciPy Stack的一部分,和SciPy Stack的社區(qū))這樣我們開始來看一下吧。然而,SciPy Stack相當(dāng)龐大,其中有十幾個(gè)庫,我們把焦點(diǎn)放在核心包上(特別是最重要的)。
關(guān)于建立科學(xué)計(jì)算棧,最基本的包是Numpy(全稱為Numerical Python)。它為Python中的n維數(shù)組和矩陣的操作提供了大量有用的功能。該庫提供了NumPy數(shù)組類型的數(shù)學(xué)運(yùn)算向量化,可以改善性能,從而加快執(zhí)行速度。
SciPy是一個(gè)工程和科學(xué)軟件庫。雷鋒網(wǎng)再次提醒,你需要理解SciPy Stack和SciPy庫之間的區(qū)別。
SciPy包含線性代數(shù),優(yōu)化,集成和統(tǒng)計(jì)的模塊。SciPy庫的主要功能是建立在NumPy上,從而它的數(shù)組大量的使用了NumPy的。它通過其特定子模塊提供有效的數(shù)值例程,并作為數(shù)字積分、優(yōu)化和其他例程。SciPy的所有子模塊中的功能都有詳細(xì)的說明 ——又是一個(gè)SciPy非常有幫助的點(diǎn)。
Pandas是一個(gè)Python包,旨在通過“標(biāo)記”和“關(guān)系”數(shù)據(jù)進(jìn)行工作,簡單直觀。Pandas是數(shù)據(jù)整理的完美工具。它設(shè)計(jì)用于快速簡單的數(shù)據(jù)操作,聚合和可視化。
庫中有兩個(gè)主要的數(shù)據(jù)結(jié)構(gòu):
“系列”(Series),一維
“數(shù)據(jù)幀”(Data Frames),二維
例如,當(dāng)您要從這兩種類型的結(jié)構(gòu)中接收到一個(gè)新的Dataframe時(shí),通過傳遞一個(gè)Series,您將收到一個(gè)單獨(dú)的行到DataFrame的DF:
這里稍微列出了你可以用Pandas做的事情:
輕松刪除并添加數(shù)據(jù)幀(DataFrame)中的列
將數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為數(shù)據(jù)幀(DataFrame)對象
處理丟失的數(shù)據(jù),表示為NaN
功能強(qiáng)大的分組
Google趨勢記錄
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
又一個(gè)SciPy Stack核心軟件包以及 Python庫,Matplotlib為輕松生成簡單而強(qiáng)大的可視化而量身定制。它是一個(gè)頂尖的軟件(在NumPy,SciPy和Pandas的幫助下),它使Python成為像MatLab或Mathematica這樣的科學(xué)工具的競爭對手。
然而,這個(gè)庫是低層級的,這意味著你需要編寫更多的代碼才能達(dá)到高級的可視化效果,而且通常會比使用更多的高級工具付出更多的努力,但總體上這些努力是值得的。
只要付出一點(diǎn)你就可以做任何可視化:
線圖
散點(diǎn)圖
條形圖和直方圖
餅狀圖;
莖圖
輪廓圖
場圖
頻譜圖
還有使用Matplotlib創(chuàng)建標(biāo)簽,網(wǎng)格,圖例和許多其他格式化實(shí)體的功能。基本上,一切都是可定制的。
該庫由不同的平臺支持,并使用不同的GUI套件來描述所得到的可視化。不同的IDE(如IPython)都支持Matplotlib的功能。
還有一些額外的庫可以使可視化變得更加容易。
Seaborn主要關(guān)注統(tǒng)計(jì)模型的可視化;這種可視化包括熱圖,這些熱圖(heat map)總結(jié)數(shù)據(jù)但仍描繪整體分布。Seaborn基于Matplotlib,并高度依賴于此。
另一個(gè)很不錯(cuò)的可視化庫是Bokeh,它針對交互式可視化。與以前的庫相比,它獨(dú)立于Matplotlib。正如我們提到的,Bokeh的主要焦點(diǎn)是交互性,它通過現(xiàn)代瀏覽器以數(shù)據(jù)驅(qū)動(dòng)文檔(d3.js)的風(fēng)格呈現(xiàn)。
最后,關(guān)于Plotly的話。它是一個(gè)基于Web用于構(gòu)建可視化的工具箱,提供API給一些編程語言(Python在內(nèi))。在plot.ly網(wǎng)站上有一些強(qiáng)大的、上手即用的圖形。為了使用Plotly,你將需要設(shè)置API密鑰。圖形將在服務(wù)器端處理,并發(fā)布到互聯(lián)網(wǎng),但有一種方法可以避免。
Google趨勢記錄
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
Scikits是Scikits Stack額外的軟件包,專為像圖像處理和機(jī)器學(xué)習(xí)輔助等特定功能而設(shè)計(jì)。對于機(jī)器學(xué)習(xí)輔助,scikit-learn是所有軟件包里最突出的一個(gè)。它建立在SciPy之上,并大量利用它的數(shù)學(xué)運(yùn)算。
scikit-learn給常見的機(jī)器學(xué)習(xí)算法公開了一個(gè)簡潔、一致的接口,可簡單地將機(jī)器學(xué)習(xí)帶入生產(chǎn)系統(tǒng)中。該庫中集成了有質(zhì)量的代碼和良好的文檔、簡單易用并且十分高效,是使用Python進(jìn)行機(jī)器學(xué)習(xí)的實(shí)際行業(yè)標(biāo)準(zhǔn)。
在深度學(xué)習(xí)方面,Python中最著名和最便的庫之一是Keras,它可以在TensorFlow或Theano框架上運(yùn)行。讓我們來看一下它們的一些細(xì)節(jié)。
首先讓我們談?wù)凾heano。
Theano是一個(gè)Python軟件包,它定義了與NumPy類似的多維數(shù)組,以及數(shù)學(xué)運(yùn)算和表達(dá)式。此庫是被編譯的,可實(shí)現(xiàn)在所有架構(gòu)上的高效運(yùn)行。最初由蒙特利爾大學(xué)機(jī)器學(xué)習(xí)組開發(fā),它主要用于滿足機(jī)器學(xué)習(xí)的需求。
值得注意的是,Theano緊密結(jié)合了NumPy在低層次上的運(yùn)算 。另外,該庫還優(yōu)化了GPU和CPU的使用,使數(shù)據(jù)密集型的計(jì)算平臺性能更佳。
效率和穩(wěn)定性微調(diào)保證了即使在數(shù)值很小的情況下,仍有更精確的結(jié)果,例如,即使只給出x的最小值,log(1 + x)仍能計(jì)算出合理的結(jié)果。
TensorFlow來自Google的開發(fā)人員,它是數(shù)據(jù)流圖計(jì)算的開源庫,為機(jī)器學(xué)習(xí)不斷打磨。它旨在滿足谷歌對訓(xùn)練神經(jīng)網(wǎng)絡(luò)的高需求,并且是基于神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)系統(tǒng)DistBelief的繼任者。然而,TensorFlow并不限制于谷歌的科學(xué)應(yīng)用范圍 – 它可以通用于多種多樣的現(xiàn)實(shí)應(yīng)用中。
TensorFlow的關(guān)鍵特征是它的多層節(jié)點(diǎn)系統(tǒng),可以在大型數(shù)據(jù)集上快速訓(xùn)練神經(jīng)網(wǎng)絡(luò)。這為谷歌的語音識別和圖像對象識別提供了支持。
最后我們來看看Keras。它是一個(gè)用Python編寫的開源的庫,用于在高層的接口上構(gòu)建神經(jīng)網(wǎng)絡(luò)。它簡單易懂,具有高級可擴(kuò)展性。Keras使用Theano或TensorFlow作為后端,但微軟現(xiàn)在正努力整合CNTK(微軟的認(rèn)知工具包)作為新的后端。
設(shè)計(jì)中的簡約方法旨在通過建立緊湊型系統(tǒng)進(jìn)行快速、簡便的實(shí)驗(yàn)。
Keras真的容易上手,并在持續(xù)完善它的快速原型能力。它完全用Python編寫,可被高度模塊化和擴(kuò)展。盡管它以易上手、簡單和以高層次為導(dǎo)向,但是Keras足夠有深度并且足夠強(qiáng)大,去支持復(fù)雜的模型。
谷歌發(fā)展趨勢歷史
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
這個(gè)庫的名稱“Natural Language Toolkit”,代表自然語言工具包,顧名思義,它用于符號學(xué)和統(tǒng)計(jì)學(xué)自然語言處理(NLP) 的常見任務(wù)。 NLTK旨在促進(jìn)NLP及相關(guān)領(lǐng)域(語言學(xué),認(rèn)知科學(xué)人工智能等)的教學(xué)和研究,目前受到重點(diǎn)關(guān)注。
NLTK的功能允許很多操作,例如文本標(biāo)記,分類和標(biāo)記,實(shí)體名稱識別,建立語料庫,可以顯示語言內(nèi)部和各句子間的依賴性、詞根、語義推理等。所有的構(gòu)建模塊都可以為不同的任務(wù)構(gòu)建復(fù)雜的研究系統(tǒng),例如情緒分析,自動(dòng)總結(jié)。
它是一個(gè)用于Python的開源庫,為有向量空間模型和主題模型的工作提供了使用工具。這個(gè)庫是為了高效處理大量文本而設(shè)計(jì)的,所以不僅可以進(jìn)行內(nèi)存處理,還可以通過廣泛使用NumPy數(shù)據(jù)結(jié)構(gòu)和SciPy操作來獲得更高的效率。Gensim高效也易于使用。
Gensim旨在與原始和非結(jié)構(gòu)化的數(shù)字文本一起使用。 它實(shí)現(xiàn)了諸如hierarchical Dirichlet processes(HDP),潛在語義分析(LSA)和潛在Dirichlet分配(LDA)之類的算法,以及tf-idf,隨機(jī)預(yù)測,word2vec和document2vec,便于檢查一組文檔中有重復(fù)模式的文本 (通常稱為語料庫)。所有的算法均是無監(jiān)督的,意味著不需要任何參數(shù),唯一的輸入只有語料庫。
谷歌發(fā)展趨勢歷史
trends.google.com
GitHub請求歷史記錄
datascience.com/trends
Scrapy庫是用于從網(wǎng)絡(luò)結(jié)構(gòu)化檢索數(shù)據(jù)(如聯(lián)系人信息或URL),可以用來設(shè)計(jì)crawling程序(也稱為蜘蛛bots)。
它是開源的,使用用Python編寫的。最開始只是如它的名字暗示的一樣,只用來做scraping,但是它現(xiàn)在已經(jīng)在完整的框架中發(fā)展,能夠從API采集數(shù)據(jù)并作為通用的crawlers了。
該庫在界面設(shè)計(jì)中標(biāo)榜著“不要重復(fù)自己” 它推薦用戶們編寫泛化得到、可被重復(fù)使用的通用代碼,從而構(gòu)建和擴(kuò)展大型的crawlers。
Scrapy的架構(gòu)圍繞著Spider class構(gòu)建,這其中包含了crawler追從的一套指令。
你可能從名字就猜出大概了,statsmodels使用戶能夠通過使用各種統(tǒng)計(jì)模型的估算方法進(jìn)行數(shù)據(jù)挖掘,并執(zhí)行統(tǒng)計(jì)判斷和分析。
許多有用的特征是可被描述的,并通過使用線性回歸模型,廣義線性模型,離散選擇模型,魯棒線性模型,時(shí)間序列分析模型,各種估計(jì)方法得出統(tǒng)計(jì)結(jié)果。
這個(gè)庫還提供了廣泛的標(biāo)定功能,專門用于大數(shù)據(jù)統(tǒng)計(jì)中的性能優(yōu)化工作。
許多數(shù)據(jù)科學(xué)家和工程師認(rèn)為這些庫是頂級的,并值得關(guān)注,或者需要或多或少了解它們。 以下是每個(gè)庫在Github上的詳細(xì)統(tǒng)計(jì)資料:
當(dāng)然,這不是完全詳盡的列表,還有許多其他的庫和框架也是值得關(guān)注。一個(gè)很好的例子是SciKit的不同軟件包各自專注一個(gè)特定的領(lǐng)域,如SciKit-Image是用于處理圖像的。
本文轉(zhuǎn)載自:雷鋒網(wǎng)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn