fbpx

2018年資料科學前 20 名熱門 Python 程式庫

前言:  這篇是翻譯自  Top 20 Python libraries for data science in 2018
感謝作者 ActiveWizards 公司授權翻譯

Python 持續在解決資料科學任務和挑戰方面處於領先的地位。 去年我們發了一篇部落格,介紹了一些 Python 的程式庫( libraries ),這些被證明在那時是最有用的程式庫。 今年,我們擴大名單並以新鮮視角重新審視我們已討論過的,重點關注這一年來所做的更新。

我們的選擇的程式庫實際上有 20 多個,因為其中一些是彼此的替代品並解決了同樣的問題。 因此,我們將它們分組,因為目前難以區分某項會勝出成為領導者。

核心程式庫( libraries )與統計

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

傳統上,我們從科學應用程式庫開始列表,NumPy 是該領域的主要軟體套件之一。 它旨在處理大型多維陣列和矩陣,並且廣泛地收集高級數學函數和實現的方法,使能運用這些物件執行各種作業。

在這一年中,此程式庫已有大量的改進。 除了錯誤修復和相容性問題之外,關鍵的更改還涉及樣式可能性( styling possibilities ),即 NumPy 物件的印出格式。 此外,某些函數現在可以處理 Python 中任何編碼的檔案。

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

另一個科學計算核心庫是 SciPy。 它基於 NumPy,因此擴展了其功能。 SciPy 主資料結構又是一個多維陣列,由 Numpy 實現。 該軟體套件包含有助於解決線性代數、機率論、積分計算和更多任務的工具。

SciPy 在持續整合到不同作業系統、新功能和方法的形式面臨重大建構改進,特別重要的是 – 更新的優化器。 此外,許多新的 BLAS 和 LAPACK 功能被包入。

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

Pandas 是一個 Python 程式庫,提供高級資料結構和各種分析工具。 該軟體套件的一大特色是能夠將相當複雜的資料作業轉換為一個或兩個命令。 Pandas 包含許多用於分組、過濾和組合資料的內建方法,以及時間序列功能。 所有這些都跟從令人印象深刻的速度指標。

已經有一些新版本的 Pandas 庫,包括數百個新功能、改進、錯誤修復和 API 更改。 這些改進涉及 Pandas 對資料進行分組和排序的能力,更適合應用方法( apply method )的輸出以及執行自訂類型作業( custome types operations )的支援。

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

Statsmodels 是一個 Python 模組,提供許多統計資料分析的許多機會,例如統計模型估計、執行統計測試等。在它的幫助下,你可以實現許多機器學習方法並探索不同的繪圖可能性。

程式庫不斷發展,帶來豐富的新功能和新機會。 因此,今年帶來了時間序列改進和新計數模型,即 GeneralizedPoisson、零膨脹模型和 NegativeBinomialP,以及新的多變數方法 – 因子分析、MANOVA 和 ANOVA中 的重複測量。

視覺化

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

Matplotlib 是一個用於創建二維圖表和圖形的低階程式庫。 藉助它的幫助,你可以建構各種圖表,從直方圖( histograms )和散點圖( scatterplots )到非笛卡爾坐標圖( non-Cartesian coordinates )。 此外,許多流行的繪圖庫都設計與 matplotlib 一起運作。

顏色、尺寸、字體、圖例等都有樣式的變化。作為外觀改進的一個例子是軸圖例的自動對齊和重要顏色之間的改進是一種新的對色盲友善的色彩循環。

matplotlib.jpg

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

Seaborn 本質上是基於 matplotlib 庫的更高級別的 API。 它包含更適合處理圖表的預設。 此外,還有豐富的視覺化圖庫,包括時間序列、聯合圖和小提琴圖等複雜類型。

Seaborn 的更新主要包括瑕疵修復。 但是,FacetGrid 或 PairGrid 與增強的互動式 matplotlib後端之間的相容性有所改進,為視覺化添加了參數和選項。

seaborn.jpg

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

Plotly 是一個流行的程式庫,可以讓你輕鬆地建構複雜的圖形。 該軟體套件適用於互動式 Web 應用程式。 其卓越的視覺化效果包括輪廓圖形、三元圖和 3D 圖表。

具有新圖形和功能的程式庫的不斷加強帶來了對“多鏈接視圖”以及動畫和串擾整合( crosstalk integration )的支援。

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

Bokeh 程式庫使用 JavaScript 小部件( widgets )在瀏覽器中創建互動式和可伸縮的視覺化。 該程式庫提供了多種圖形、樣式可能性、以鏈接圖形的樣式做互動的能力、添加小部件、定義呼叫回傳以及更多有用的功能。

Bokeh 可以其改善的互動式功能自詡,例如分類刻度標籤的旋轉,以及小縮放工具和自訂工具提示欄位的增強功能。

bokeh.jpg

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

Pydot 是一個用於產生複雜導向和非導向圖形的程式庫。 它是 Graphviz 的一個介面,用純Python 編寫。 在它的幫助下,可以顯示圖形的結構,這在建構神經網路和基於決策樹的演算法時經常需要。

pydot.png

機器學習

10. Scikit-learn (提交: 22753, 貢獻者: 1084)

這個基於 NumPy 和 SciPy 的 Python 模組,處理資料的最佳程式庫( libraries )之一。 它為許多標準機器學習和資料探勘任務提供演算法,例如群聚、迴歸、分類、降維和模型選擇。

程式庫有許多增強功能。 交叉驗證已被修改,提供能使用多指標的功能。 一些訓練方法如最近鄰( nearest neighbors )和邏輯迴歸等面臨一些小小改進。 最後,主要更新之一是完成了通用術語和 API 元素詞彙表,Scikit-learn 中熟悉使用的術語和慣例。

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

梯度漸增( Gradient boosting )是最流行的機器學習演算法之一,其在於建構連續精化的基本模型的集合,即決策樹。 因此,有專門的程式庫設計用於快速方便地實現該方法。 以此來說,我們認為 XGBoost、LightGBM 和 CatBoost 值得特別關注。 它們是解決同樣的問題的競爭對手,幾乎以同樣的方式。 這些程式庫提供高度優化、可擴展和快速的梯度增強實現,這使得它們在資料科學家和 Kaggle 競爭對手中非常受歡迎,他們在這些演算法的幫助下贏得許多競賽。

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

通常,機器學習模型預測的結果並不完全清楚,這是 eli5 程式庫幫助解決的挑戰。 它是一個視覺化和除錯機器學習模型的套件,逐步追蹤演算法的運作。 它支援 scikit-learn、XGBoost、LightGBM、lightning 和 sklearn-crfsuite 程式庫,並為每個庫執行不同的任務。

深度學習

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

TensorFlow 是一個流行的深度和機器學習框架,由 Google Brain 開發。 它提供了運用具有多個資料集的人工神經網路的能力。 最受歡迎的 TensorFlow 應用包括物件識別、語音識別等。 常規 TensorFlow 上還有不同的圖層助手,例如 tflearn、tf-slim、skflow等。

這個程式庫更新版本速度很快,引入了新的和新功能。 最新的修復包括修補潛在的安全漏洞和 TensorFlow 改進和 GPU 整合,例如你可以在一台計算機上的多個 GPU 上運行估計 ( Estimator ) 模型。

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

PyTorch 是一個大型框架,允許你使用 GPU 加速執行張量計算,創建動態計算圖並自動計算梯度。 在此之上,PyTorch 提供了豐富的 API,用於解決與神經網路相關的應用。

該庫基於 Torch,這是一個用 C 語言實現的開源深度學習程式庫,在 Lua 中有一個包裝器。 Python API於 2017 年推出,從那時起,該框架越來越受歡迎並吸引越來越多的資料科學家。

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

Keras 是一個用於處理神經網路的高階程式庫,運行在 TensorFlow、Theano 之上,現在新版本,還可使用 CNTK 和 MxNet 作後端。 它簡化了許多特定任務,並大大減少了單調程式碼(monotonous code )的數量。 但是,它可能不適合某些複雜的事情。

該庫做了性能、可用性、文件和 API 改進。 一些新功能是 Conv3DTranspose 層、新的MobileNet 應用程式和自我規範化( self-normalizing  )網路。

分散式深度學習

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

由於越來越多的用例需要相當多的努力和時間,因此深度學習問題現在變得越來越重要。 但是,使用像 Apache Spark 這樣的分散式計算系統可以更輕鬆地處理如此大量的資料,這再次擴展了深度學習的可能性。 因此,dist-keras、elephas 和 spark-deep-learning 正在迅速普及並迅速發展,並且很難單獨挑出其中一個程式庫,因為它們都是為解決一項共同任務而設計的。 這些軟體套件允許你在 Apache Spark 的幫助下直接基於 Keras 程式庫訓練神經網路。 Spark-deep-learning 還提供了使用 Python 神經網路創建管道( pipeline )的工具。

自然語言處理

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

NLTK 是一組程式庫,是自然語言處理的完整平台。 在 NLTK 的幫助下,你可以通過各種方式處理和分析文本、令牌化( tokenize )和標記( tag )文本、提取資訊等。 NLTK 還用於原型設計和建構研究系統。

這個程式庫的魅力包括 API 和相容性的微小變化以及 CoreNLP 的新界面。

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

SpaCy是一個自然語言處理程式庫,包含優秀的範例、API 文件和展示應用程式。 該庫是用Cython 語言編寫的,它是 Python 的 C 擴展。 它支持近 30 種語言,提供簡單的深度學習整合,並承諾穩健性和高準確性。 SpaCy 的另一個重要特性是為整個文件處理而設計的架構,其不會將文件斷開成短語。

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

Gensim 是一個用於強大語義分析、主題建模和向量空間建模的 Python 程式庫,基於 Numpy 和 Scipy 建構。 它提供了流行的 NLP 演算法的實現,例如 word2vec。 儘管 Gensim有自己的models.wrappers.fasttext 實現,但 fasttext 程式庫也可用於有效學習單詞表示。

資料爬蟲擷取

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

Scrapy 是一個用於創建掃描網站頁面和收集結構化資料的蜘蛛機器人的程式庫。 此外,Scrapy 可以從 API 中提取資料。 由於其可擴展性和可移植性,該庫恰好非常方便。

在這一年中取得的進步包括代理伺服器的幾次升級以及改進的錯誤通知和問題識別系統。 使用 Scrapy 解析在元資料( metadata ) 設置中也有新的可能性。

結論

這是我們在 2018 年豐富的資料科學 Python 庫集合。與去年相比,一些新的現代程式庫越來越受歡迎,而那些已成為資料科學任務經典的程式庫也持續不斷改進。

同樣,有一個表格顯示了 github 活動的詳細統計資訊。

github-table01.png

即使我們今年擴展了我們的名單,它仍然可能不會涵蓋一些值得關注的其他很棒且有用的程式庫。 因此,請在下面的評論部分分享你的最愛,以及有關我們提到的軟體套件的任何想法。

感謝你的關注!

你可能會有興趣

喜歡我們的分享嗎? 使用以下的社群分享按鈕分享給你的朋友吧!

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Powered by WordPress.com.

Up ↑

%d 位部落客按了讚: