1、Numpy1
當(dāng)開始嘗試用Python解決科學(xué)任務(wù)時(shí),我們不可避免會(huì)求助于Python的SciPy Stack,Scipy Stack是一個(gè)專門為在Python上進(jìn)行科學(xué)計(jì)算的軟件的集合(不要為SciPy包而困惑,那只是這個(gè)Stack的一個(gè)子集和圍繞這個(gè)Stack的社區(qū))。然而,這個(gè)Stack非常巨大,有超過(guò)一打的庫(kù)在里面,我們只聚焦在核心的包上(最必須的一部分)。 Numpy(stands for Numerical Python)包是最根本的包,甚至于SciPy Stack就是圍繞這個(gè)包建立起來(lái)的。她為用Python操作數(shù)組和矩陣提供了豐富的有用特性。該庫(kù)提供了NumPy數(shù)組類型的數(shù)學(xué)運(yùn)算向量化,可以改善性能,從而加快執(zhí)行速度。 2.SciPySciPy是一個(gè)工程和科學(xué)軟件庫(kù)。 您還需要了解SciPy Stack和SciPy Library之間的區(qū)別。 SciPy包含線性代數(shù),優(yōu)化,集成和統(tǒng)計(jì)的模塊。 SciPy庫(kù)的主要功能是建立在NumPy的基礎(chǔ)之上,因此它的數(shù)組大量使用了NumPy。 它通過(guò)其特定的子模塊提供有效的數(shù)值例程作為數(shù)字積分,優(yōu)化和許多其他例程。 SciPy的所有子模塊中的功能都有詳細(xì)的記錄。 3.Pandas3
Pandas是一個(gè)設(shè)計(jì)來(lái)簡(jiǎn)單直觀地對(duì)有標(biāo)記的數(shù)據(jù)或者關(guān)系型數(shù)據(jù)進(jìn)行操作的Python包。它是一個(gè)數(shù)據(jù)清洗的完美工具,被設(shè)計(jì)用來(lái)快速簡(jiǎn)單的數(shù)據(jù)操作,聚合和可視化。 "Series" - 1維 4
"Data Frames" - 2維 5
如下只是我們基于Pandas能做的事情的小清單:
可視化4.MatplotlibMatPlotlib是另一個(gè)SciPy Stack核心軟件包和另一個(gè)Python庫(kù),專為輕松生成豐富的可視化圖形而量身定制。他讓Python正成為像MatLab或者M(jìn)athematica這樣的科學(xué)工具的有力競(jìng)爭(zhēng)者。然而,這個(gè)庫(kù)相當(dāng)?shù)讓?,意味著你需要編寫更多的代碼才能達(dá)到高級(jí)的可視化效果,通常會(huì)比使用更多的高級(jí)工具付出更多的努力,但總體來(lái)說(shuō)努力是值得的。 只需要一點(diǎn)功夫,你就能做出下面任何的可視化方法:
還有使用Matplotlib創(chuàng)建標(biāo)簽,網(wǎng)格,圖例和許多其他格式化實(shí)體的功能。 基本上,一切都是可定制的。 該庫(kù)由不同的平臺(tái)支持,并使用不同的GUI套件來(lái)描述所得到的可視化。 不同的IDE(如IPython)支持Matplotlib的功能。 還有一些額外的庫(kù)可以使可視化變得更加容易。 6
5.SeabornSeaborn主要聚焦于統(tǒng)計(jì)模型的可視化;這些可視化包括總結(jié)數(shù)據(jù)但仍描繪整體分布的熱圖。Seaborn是基于Matplotlib建立的,并高度依賴于那個(gè)包。 7
6.BokehBoken是另一個(gè)強(qiáng)大的可視化庫(kù),目標(biāo)是建立交互可視化的圖標(biāo)。與之前的圖書館相比,這個(gè)圖書館獨(dú)立于Matplotlib。 正如我們已經(jīng)提到的那樣,Bokeh的主要聚焦在交互性,它通過(guò)現(xiàn)代瀏覽器以數(shù)據(jù)驅(qū)動(dòng)文檔(d3.js)的風(fēng)格呈 8
7.Plotly簡(jiǎn)單介紹一下Plotly。它是一個(gè)基于Web的工具箱,將API暴露給某些編程語(yǔ)言(其中包括Python)來(lái)構(gòu)建可視化。 在plot.ly網(wǎng)站上有一些強(qiáng)大的,開箱即用的圖形。為了使用Plotly,您將需要設(shè)置您的API密鑰。圖形將被處理在服務(wù)器端,并將在互聯(lián)網(wǎng)上發(fā)布。 9
機(jī)器學(xué)習(xí)8.SciKit-LearnScikits是SciPy Stack的補(bǔ)充軟件包,專為特定功能(如圖像處理和機(jī)器學(xué)習(xí)輔助)而設(shè)計(jì)。 在這些領(lǐng)域,其中最突出的一個(gè)是scikit-learn。該軟件包建立在SciPy的上層,并大量使用其數(shù)學(xué)操作。 scikit-learn公開了一個(gè)簡(jiǎn)潔和一致的界面,與常見的機(jī)器學(xué)習(xí)算法,使得把機(jī)器學(xué)習(xí)帶入生產(chǎn)系統(tǒng)變得簡(jiǎn)單。 此庫(kù)有著高質(zhì)量的代碼和良好的文檔,并使用簡(jiǎn)單性能優(yōu)越,是使用Python進(jìn)行機(jī)器學(xué)習(xí)的事實(shí)上的行業(yè)標(biāo)準(zhǔn)。 深度學(xué)習(xí) - Keras / TensorFlow / Theano在深度學(xué)習(xí)方面,Python中最突出和最方便的庫(kù)之一是Keras,它可以在TensorFlow或者Theano之上運(yùn)行。讓我們來(lái)看一下他們的一些細(xì)節(jié)。 9.Theano首先,讓我們談?wù)凾heano。 Theano是一個(gè)Python包,它定義了與NumPy類似的多維數(shù)組,以及數(shù)學(xué)運(yùn)算和表達(dá)式。 這個(gè)庫(kù)是自編譯的,使其能夠在所有架構(gòu)上高效運(yùn)行。 最初由蒙特利爾大學(xué)機(jī)器學(xué)習(xí)組開發(fā),主要用于機(jī)器學(xué)習(xí)的需求。 重要的是要注意的是,Theano與NumPy在低層次的操作上緊密集成。 該庫(kù)還優(yōu)化了GPU和CPU的使用,使數(shù)據(jù)密集型計(jì)算的性能更快。 效率和穩(wěn)定性調(diào)整允許更精確的結(jié)果,甚至非常小的值,例如,log(1 + x)的計(jì)算將給出x的最小值的認(rèn)知結(jié)果。 10. TensorFlowTensorFlow是由Google的開發(fā)人員開發(fā),它是一個(gè)圖形化的數(shù)據(jù)流計(jì)算開源庫(kù),專注于機(jī)器學(xué)習(xí)。 它旨在滿足Google環(huán)境對(duì)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的高度要求,并且是基于神經(jīng)網(wǎng)絡(luò)的機(jī)器學(xué)習(xí)系統(tǒng)DistBelief的繼任者。然而,TensorFlow并不是嚴(yán)格用于谷歌范圍的科學(xué)用途 - 在一般的實(shí)際應(yīng)用中同樣有效。 TensorFlow的關(guān)鍵特征是其多層節(jié)點(diǎn)系統(tǒng),可以在大型數(shù)據(jù)集上快速訓(xùn)練人工神經(jīng)網(wǎng)絡(luò)。 這為Google的語(yǔ)音識(shí)別和圖像對(duì)象識(shí)別提供了支持。 11.Keras最后,我們來(lái)看看Keras。它是一個(gè)用Python編寫的用于在高級(jí)界面構(gòu)建神經(jīng)網(wǎng)絡(luò)的開源庫(kù)。它簡(jiǎn)單易懂又有著高度可擴(kuò)展性。它使用Theano或TensorFlow作為后端,但Microsoft現(xiàn)在將CNTK(Microsoft的認(rèn)知工具包)集成為新的后端。 設(shè)計(jì)中的極簡(jiǎn)方法旨在通過(guò)建立極小集進(jìn)行快速和容易的實(shí)驗(yàn)。 Keras 真的非常容易入門而且可以通過(guò)快速標(biāo)準(zhǔn)逐漸深入。它是用純Python編寫的,高度模塊化而又可擴(kuò)展。盡管它的輕松,簡(jiǎn)單和高度定向,Keras仍然對(duì)大型模型有著足夠深和有力的機(jī)器學(xué)習(xí)能力。 Keras的核心是基于層,其他一切都圍繞著它們構(gòu)建。數(shù)據(jù)預(yù)處理為張量,第一層負(fù)責(zé)輸入張量,最后一層負(fù)責(zé)輸出,并建立模型。 自然語(yǔ)言處理。12.NLTK這套工具包的名稱代表自然語(yǔ)言工具包,顧名思義,它用于符號(hào)和統(tǒng)計(jì)自然語(yǔ)言處理的常見任務(wù)。 NLTK旨在促進(jìn)NLP及相關(guān)領(lǐng)域(語(yǔ)言學(xué),認(rèn)知科學(xué)人工智能等)的教學(xué)和研究,目前正在被重點(diǎn)關(guān)注。 NLTK的功能允許許多操作,例如文本標(biāo)記,分類和標(biāo)記,名稱實(shí)體標(biāo)識(shí),建立語(yǔ)言樹,顯示語(yǔ)言間和句子內(nèi)依賴性,詞根,語(yǔ)義推理。 所有的構(gòu)建塊都可以為不同的任務(wù)構(gòu)建復(fù)雜的研究系統(tǒng),例如情緒分析,自動(dòng)總結(jié)。 13.Gensim它是一個(gè)用于Python的開源庫(kù),可以用來(lái)進(jìn)行向量空間建模和主題建模的工具。 這個(gè)工具包不僅可以進(jìn)行內(nèi)存處理,還設(shè)計(jì)來(lái)高效處理大型文本。效率通過(guò)使用NumPy數(shù)據(jù)結(jié)構(gòu)和SciPy操作來(lái)實(shí)現(xiàn)。既高效又易于使用。 Gensim旨在與原始和非結(jié)構(gòu)化數(shù)字文本一起使用。 Gensim實(shí)現(xiàn)了諸如分層Dirichlet進(jìn)程(HDP),潛在語(yǔ)義分析(LSA)和潛在Dirichlet分配(LDA)之類的算法,以及tf-idf,隨機(jī)投影,word2vec和document2vec便于檢查文本中的重復(fù)模式的文本的一套文件(通常稱為語(yǔ)料庫(kù))。 所有的算法是無(wú)監(jiān)督的 - 不需要任何參數(shù),唯一的輸入是語(yǔ)料庫(kù)。 數(shù)據(jù)挖掘、統(tǒng)計(jì)14.ScrapyScrapy是用于從網(wǎng)絡(luò)檢索結(jié)構(gòu)化數(shù)據(jù)(如聯(lián)系人信息或URL)的爬行程序(也稱為蜘蛛機(jī)器人)的庫(kù)。 它是開源的,用Python編寫。 它的設(shè)計(jì)嚴(yán)格按照爬行的方式,正如它的名字,但是它已經(jīng)在完整的框架中發(fā)展,能夠從API采集數(shù)據(jù)并作為通用爬蟲。 該圖書館在界面設(shè)計(jì)中著名的“不要重復(fù)自己” - 它提示用戶編寫將要重復(fù)使用的通用代碼,從而構(gòu)建和縮放大型爬蟲。 Scrapy的架構(gòu)圍繞著Spider類構(gòu)建,包含了爬行器跟蹤的一系列指令。 15.Statsmodels正如您可能從名稱中猜出的那樣,statsmodels是一個(gè)用于Python的庫(kù),使用戶能夠通過(guò)使用各種統(tǒng)計(jì)模型估計(jì)方法進(jìn)行數(shù)據(jù)挖掘并執(zhí)行統(tǒng)計(jì)斷言和分析。 許多有用的特征是描述性的,并通過(guò)使用線性回歸模型,廣義線性模型,離散選擇模型,魯棒線性模型,時(shí)間序列分析模型,各種估計(jì)量進(jìn)行統(tǒng)計(jì)。 圖書館還提供了可擴(kuò)展的繪圖功能,專門為統(tǒng)計(jì)分析和在進(jìn)行大數(shù)據(jù)統(tǒng)計(jì)時(shí)表現(xiàn)良好而設(shè)計(jì)。 結(jié)論這些庫(kù)被許多數(shù)據(jù)科學(xué)家和工程師認(rèn)為是該列表的首位,值得一看,并至少熟悉它們。 以下是每個(gè)庫(kù)Github活躍程度的詳細(xì)統(tǒng)計(jì)資料: 10
當(dāng)然,這不是完全詳盡的列表,還有許多其他庫(kù),工具包和框架也是非常有用的,尤其是針對(duì)一些特別的任務(wù)。 一個(gè)很好的例子是不同的SciKit軟件包,專注于特定領(lǐng)域,如用于處理圖像的SciKit-Image。 |
|