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