2018年,20大Python資料科學庫都做了哪些更新?

呆鳥發表於2018-07-16

標籤: BokehData ScienceKerasMatplotlibNLTKnumpyPandasPlotlyPythonPyTorchscikit-learnSciPySeabornTensorFlowXGBoost

原文作者: ActiveWizards

原文地址:Top 20 Python Libraries for Data Science in 2018

歡迎來我的簡書:呆鳥的譯Py胡言

Image

Python今年依舊保持著資料科學領域的領先地位。去年,我們在部落格上列出了15個頂級Python資料科學庫的榜單,當時大家都覺得非常好。這次,介紹一下這些頂級資料科學Python庫今年有哪些更新,同時,我們還為這個榜單新增了一些新庫。

實際上,這次的榜單不止20個庫,主要是因為現在某些領域裡有多個庫都能解決相同的問題,而且暫時也不好說哪個庫能成為領頭羊,因此,我們將這些庫分為一組,供大家選擇。

核心庫與統計庫

1. NumPy (提交修改: 17911, 貢獻者: 641)

按慣例,本榜單首先列出科學應用庫,Numpy是這一類的首選,它是處理大型多維陣列、矩陣及高階數學函式的工具集合,提供了多種資料操作方法。

今年,Numpy進行了很多改進。除了修復Bug和加強相容性外,關鍵的改進是增加了可選樣式,即Numpy物件的列印格式。此外,還增加了新的功能,只要是Python支援的編碼,Numpy就可以處理使用這些編碼的檔案。

2. SciPy (提交修改: 19150, 貢獻者: 608)

科學計算的的另一個核心庫是SciPy。SciPy基於Numpy,擴充套件了Numpy的功能,它的核心資料結構是用Numpy實現的多維陣列。這個庫包含了一組處理線性代數、概率論、積分學等任務的工具。

SciPy的主要改進包括對不同作業系統的整合,增加了新的函式與方法,值得一提的是,SciPy更新了優化器。此外,還打包了不少新的BLAS[^1]和LAPACK[^2]函式。

[^1]: BLAS的全稱是Basic Linear Algebra Subprograms,即基礎線性代數子程式,是一系列API規範,如向量、矩陣之間的乘法等。 [^2]: LAPACK的全稱是linear algebra package,即線性代數庫,其底層是BLAS,在此基礎上定義了很多矩陣和向量高階運算的函式,如矩陣分解、求逆和求奇異值等。LAPACK是科學計算(矩陣運算)的介面規範,執行效率比BLAS更高。

3. Pandas (提交修改: 17144, 貢獻者: 1165)

Pandas提供了高層資料結構和大量的分析工具。這個庫最牛的地方是可以用一兩條命令實現很多複雜的資料分析操作。Pandas內建了很多方法,比如分組、篩選、合併資料及時間序列等功能,並且,這些操作的運算速度都非常快。

今年,Pandas進行了數百項優化,包括增加了新特性、修復了Bug、改進了API。這些優化主要集中在提升Pandas分組和排序資料的能力,提供了更適用的apply方法的輸出結果,還為操作自定義型別提供了支援。

4. StatsModels (提交修改: 10067, 貢獻者: 153)

Statsmodels是進行統計資料分析的Python模組,比如,評估統計模型、執行統計測試等。有了Statsmodels,就可以實現很多機器學習方法,探索不同圖形的繪圖可能性。

Statsmodels還在不斷開發升級,將來會提供越來越多的新特性。今年,Statsmodels引入了時間序列和新的技術模型,如,廣義泊松、零膨脹模型、負二項式分佈等,它還提供了一些新的多元方法,如,因子分析、多元方差分析(MANOVA)和方差分析(ANOVA)的重複測量等。

視覺化

5. Matplotlib (提交修改: 25747, 貢獻者: 725)

Matplotlib是建立二維圖形的底層庫。使用Matplotlib可以建立直方圖、散點圖、非笛卡爾座標圖等多種圖形,並且,大部分流行繪相簿都與Matplotlib相容,可以進行互動操作。

今年,Matplotlib優化了顏色、字型、尺寸、圖例等樣式。比如,它對外觀的優化包括了自動對齊圖例,還改進了色彩,新採用的色相環即便是色盲也可以看。

image

6. Seaborn (提交修改: 2044, 貢獻者: 83)

Seaborn是基於Matplotlib開發的高層API,與Matplotlib相比,它提供了更多實用的預設圖形,包括諸如時間序列、Jointplot和小提琴圖這樣的視覺化圖。

2018年上半年,Seaborn的升級主要是修復Bug。同時,還改進了FaceGrid和PairGrid與Matplotlib增強型互動後端的相容性,併為視覺化圖增加了引數和選項。

image

7. Plotly (提交修改: 2906, 貢獻者: 48)

使用Plotly可以輕易地生成複雜的圖形,這個庫可以用來開發互動式的網頁應用,還可以生成非常華麗的等高線圖、三角圖及3D圖。

今年,Plotly的優化主要在於提供了很多新的圖形和特性,引入了對動畫與串擾整合等多重連結檢視的支援。

8. Bokeh (提交修改: 16983, 貢獻者: 294)

Bokeh使用JavaScript Widget,用於建立可在瀏覽器中檢視的互動式、向量化的視覺化圖。通過連結圖形、新增Widget和回撥函式等實用特性,Bokeh提供了很多圖形、樣式以及互動功能。

Bokeh今年優化的互動功能還是可圈可點的,比如說,旋轉式類別圖例標籤,縮放工具、增強型自定義工具提示欄位等。

image

9. Pydot (提交修改: 169, 貢獻者: 12)

Pydot是生成複雜定向圖與非定向圖的庫,它是Python開發的Graphviz^3介面。有了Pydot,就可以展示結構化的圖形,構建神經網路圖與基於演算法的決策樹等圖形。

機器學習

10. scikit-learn (提交修改: 22753, 貢獻者: 1084)

scikit-learn是最強大的資料處理庫之一,它是基於Numpy和SciPy的Python模組。scikit-learn提供了很多標準機器學習與資料探勘演算法,比如,分類、聚類、迴歸、降維與模型選擇等。

2018年上半年,scikit-learn做了很多改進。優化了交叉驗證,使其可以使用一個以上的指標;完善了最近鄰和邏輯迴歸等幾個訓練方法;還有一點是終於推出了通用術語與API元素術語表,有了這個術語表就可以很方便地瞭解scikit-learn的專業術語和使用約定。

11. XGBoost / LightGBM / CatBoost (提交修改: 3277 / 1083 / 1509, 貢獻者: 280 / 79 / 61)

梯度增強是機器學習裡最流行的演算法,這個演算法是基於決策樹等持續精化的基本模型集合構建的。因此,現在出現了一些為了快速、便捷實現這種方法而設計的專用庫。我們認為 XGBoost、LightGBM與CatBoost值得特別關注。它們都是解決梯度增強問題的競爭者,使用方式也幾乎相同。XGBoost這幾個庫提供了高度優化、可擴充套件、可快速實現的梯度增強演算法,這些優勢讓它們在現在的資料科學界裡非常流行;甚至,由於其演算法對贏得Kaggle比賽有很大幫助,現在很多參賽者也喜歡用這些庫來解決Kaggle比賽問題。

12. Eli5 (提交修改: 922, 貢獻者: 6)

機器學習模型預測的結果往往並不一目瞭然,無法讓人輕易就能理解,Eli5就是為了解決這一痛點而開發的。Eli5用於將機器學習模型進行視覺化,並進行Debug,可以一步一步追蹤演算法的執行步驟。Eli5支援scikit-learn、XGBoost、LightGBM、lightning和sklearn-crfsuite等庫,能夠為這些庫執行不同的監控任務。

深度學習

13. TensorFlow (提交修改: 33339, 貢獻者: 1469)

TensorFlow是谷歌大腦開發的、超級火爆的深度學習與機器學習框架,它使用人工神經網路處理多重資料集。TensorFlow廣泛應用於物件識別、語音識別等業務,現在還出現了不少基於TensorFlow建立的高層輔助器,比如tflearn、tf-slim和skflow等。

TensorFlow還在快速迭代,今年釋出了不少更新版本,提供了很多新特性。比如,最新的版本修復了潛在的安全隱患,改進了TensorFlow與GPU的整合,可以讓TensorFlow在一臺機器上使用多個GPU執行評估期模型。

14. PyTorch (提交修改: 11306, 貢獻者: 635)

PyTorch是一個大型框架,允許使用者使用GPU加速張量計算、建立動態計算圖、自動計算梯度值。PyTorch還提供了豐富的API介面,用於解決神經網路的相關應用。

PyTorch是基於Torch這個開源深度學習開源庫建立的,2017年才引入了Python API介面。從那時起,PyTorch就變得非常流行,吸引了越來越多的資料科學家使用者。

15. Keras (提交修改: 4539, 貢獻者: 671)

Keras是執行在TensorFlow和Theano之上的高層神經網路庫,最新版本還可以將CNTK和MxNet作為後端。Keras簡化了任務操作,大大地減少了編寫程式碼的工作量。然而,對於一些複雜的任務,Keras並不是十分適用。

今年,Keras優化了效能、可用性、文件和API,增加了Conv3D轉置層、MobileNet應用與自歸一網路等新特性。

分散式深度學習

16. Dist-keras / elephas / spark-deep-learning (提交修改: 1125 / 170 / 67, 貢獻者: 5 / 13 / 11)

如今,越來越多的用例處理工作需要消耗極為龐大的資源與時間,因此,大規模資料的深度學習問題已經變得非常嚴峻了。然而,隨著Apache Spark等分散式計算系統擴充到深度學習領域,處理這種大規模資料就變得簡單了。因此,dist-keras、elephas和spark-deep-learning這樣的庫很快就應運而生,開發速度也非常快。只不過這些庫現在都旨在解決同樣的問題,目前還看不出來誰能夠脫穎而出。這些庫可以通過Keras直接呼叫Apache Spark訓練神經網路,Spark-deep-learning還提供了構建Python神經網路管道的工具。

自然語言處理

17. NLTK (提交修改: 13041, 貢獻者: 236)

NLTK是自然語言處理的平臺。可以使用NLTK處理、分析文字,進行分詞、標記、資訊提取等工作,還可以使用NLTK搭建原型和調研系統。

NLTK今年的改進不多,主要是優化了API和相容性,以及提供了一個新的CoreNLP的介面。

18. SpaCy (提交修改: 8623, 貢獻者: 215)

SpaCy這個自然語言處理庫提供了很多好用的例程、API文件和應用Demo。SpaCy是使用Cython開發的,支援超過30種語言,可以輕鬆地與深度學習整合,還能保證穩健、精準的結果。

SpaCy還有一個非常實用的特性,就是它的設計架構很好,不需要將文件分段就可以處理整個文件。

19. Gensim (提交修改: 3603, 貢獻者: 273)

Gensim是基於Numpy和Scipy的Python庫,可以進行語義分析、主題建模和向量空間建模。它提供了word2vec等NLP演算法。雖然Gensim有自己的models.wrappers.fasttext,但是fasttext這個庫也可以用於高效的詞表徵學習。

資料採集

20. Scrapy (提交修改: 6625, 貢獻者: 281)

Scrapy是用來構建爬蟲機器人掃描網頁,採集結構化資料的Python庫,Scrapy還可以通過API提取資料。Scrapy支援擴充套件和移植,用起來非常順手。

今年Scrapy有很多升級,優化了Proxy伺服器,改進了錯誤提示與問題識別系統,推出了使用Scrapy解析後設資料設定的新功能。

結論

以上就是我們的2018年上半年的Python資料科學庫榜單。與去年相比,經典的資料科學庫仍在不斷地完善、優化,與此同時,這個領域裡也出現了不少新興的資料科學庫。

最後,給大家呈上Github上這些庫的活躍表。

image

**ActiveWizards**是由資料科學家和資料工程師組成的團隊,關注於大資料、資料科學、機器學習、資料視覺化等資料專案。我們的核心專業領域包括資料科學(資料研究、機器學習演算法與資料開發),資料視覺化(D3.js、Tableau等)、大資料開發(Hadoop、Spark、Kafka、Cassandra、HBASE、MongoDB等)及資料密集型Web應用開發(RESTful API、Flask、Django和Meteor等)。

相關文章