核心庫與統計
1. NumPy(提交:17911,貢獻者:641)
一般我們會將科學領域的庫作為清單打頭,NumPy 是該領域的主要軟件庫之一。它旨在處理大型的多維數組和矩陣,並提供了很多高級的數學函數和方法,因此可以用它來執行各種操作。
在過去一年,開發團隊對該庫進行了大量改進。除了錯誤修復和解決兼容性問題之外,關鍵的變更還包括樣式改進,即 NumPy 對象的打印格式。此外,一些函數現在可以處理任意編碼的文件,只要這些編碼受 Python 支持。
2. SciPy(提交:19150,貢獻者:608)
另一個科學計算核心庫 SciPy,基於 NumPy 而構建,並擴展了 NumPy 的功能。SciPy 的主要數據結構是多維數組,使用 Numpy 實現。該庫提供了一些用於解決線性代數、概率論、積分計算等任務的工具。
SciPy 通過與不同的操作系統進行持續集成的方式帶來了重大改進,比如新的函數和方法,更重要的是——最新的優化器。此外,開發團隊對很多新的 BLAS 和 LAPACK 函數進行了包裝。
3.Pandas(提交:17144,貢獻者:1165)
Pandas 是一個 Python 庫,提供了高級的數據結構和各種分析工具。該庫的一大特色是能夠將相當復雜的數據操作轉換為一兩個命令。Pandas 提供了很多內置的方法,用於分組、過濾和組合數據,還提供了時間序列功能。所有這些方法的執行速度都很快。
新發布的 pandas 庫還提供了數百個新特性、功能增強、錯誤修復和 API 變更。這些改進與 Pandas 對數據進行分組和排序的能力有關,支持自定義類型操作。
4. StatsModels(提交:10067,貢獻者:153)
Statsmodels 是一個 Python 模塊,為統計數據分析提供了很多可能性,例如統計模型估計、運行統計測試等。你可以借助它來實現很多機器學習方法,並探索不同的繪圖可能性。
該庫在不斷演化,帶來了更多的可能性。今年帶來了時間序列改進和新的計數模型 GeneralizedPoisson、零膨脹模型和 NegativeBinomialP,以及新的多變量方法因子分析、MANOVA 和 ANOVA 的重復測量。
可視化
5. Matplotlib(提交:25747,貢獻者:725)
Matplotlib 是一個用於創建二維圖表和圖形的低級庫。你可以用它來構建各種圖表,從直方圖和散點圖到非笛卡爾坐標圖。此外,很多流行的繪圖庫都為 Matplotlib 預留了位置,可與 Matplotlib 結合在一起使用。
該庫在繪圖樣式方面做出了很多變更,如顏色、尺寸、字體、圖例等。例如,坐標軸圖例的自動對齊和對色盲患者更友好的色環。
6. Seaborn(提交:2044,貢獻者:83)
Seaborn 實際上是基於 matplotlib 庫構建的高級 API。它為處理圖表提供了更恰當的默認選項。此外,它還提供了一組豐富的可視化圖庫,包括時間序列、聯合圖和小提琴圖等復雜的類型。
Seaborn 的更新主要是問題修復。不過,FacetGrid(或 PairGrid)與增強的交互式 matplotlib 后端之間的兼容性有所改進,為可視化添加了參數和選項。
7. Plotly(提交:2906,貢獻者:48)
Plotly 是一個可以幫助你輕松構建復雜圖形的流行庫。該庫適用於交互式 Web 應用程序,它提供了很多很棒的可視化效果,包括輪廓圖形、三元圖和 3D 圖表。
這個庫在持續地增強和改進,帶來新的圖形和特性,支持“多鏈接視圖”、動畫和串擾集成。
8. Bokeh(提交:16983,貢獻者:294)
Bokeh 庫使用 Java 小部件在瀏覽器中創建交互式和可伸縮的可視化圖形。該庫提供了多種圖形、樣式、鏈接圖形式的交互能力、添加小部件、定義回調以及更多有用的功能。Bokeh 改進的交互式功能值得稱贊,例如可旋轉的分類刻度標簽,以及小型的縮放工具和自定義工具提示字段增強。
9. Pydot(提交:169,貢獻者:12)
Pydot 是一個用於生成面向復雜圖形和非面向復雜圖形的庫。它作為面向 Graphviz 的一個接口,使用 Python 編寫。我們可以借助它來顯示圖形的結構,這在構建神經網絡和基於決策樹的算法時經常會用到。
機器學習
10. Scikit-learn(提交:22753,貢獻者:1084)
這個基於 NumPy 和 SciPy 的 Python 模塊是處理數據的最佳庫之一。它為很多標准的機器學習和數據挖掘任務提供算法,例如聚類、回歸、分類、降維和模型選擇。
該庫有很多增強功能。交叉驗證已經獲得更新,現在可以使用多個指標。一些訓練方法(如鄰近取樣和邏輯回歸等)得到一些小改進。它的主要更新之一是完成了通用術語和 API 元素詞匯表。
11. XGBoost/LightGBM/CatBoost(提交:3277/1083/1509,貢獻者:280/79/61)
梯度提升是最流行的機器學習算法之一,它的核心原理在於構建連續精煉的基本模型的集合,即決策樹。因此,有些專門的庫被設計用於方便快速地實現該方法。我們認為 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 作為后端。它簡化了很多特定任務,並大大減少了樣板代碼的數量,但它可能不適用於某些復雜的事情。
該庫在性能、可用性、文檔和 API 方面進行了改進,並推出了一些新特性,如 Conv3DTranspose 層、新的 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 還用於原型設計和構建研究性系統。
該庫的增強還包括 API 和兼容性的微小變更以及面向 CoreNLP 的新接口。
18. SpaCy(提交:8623,貢獻者:215)
SpaCy 是一個自然語言處理庫,包含了優秀的示例、API 文檔和演示應用程序。該庫使用 Cython(Python 的 C 擴展)編寫。它支持將近 30 種語言,可以方便地與深度學習集成,並保證健壯性和高准確率。SpaCy 有一個為處理整個文檔而設計的架構,在處理文檔時不需要將它分成短語,這也是 SpaCy 的一個重要特性。
19. Gensim(提交:3603,貢獻者:273)
Gensim 基於 Numpy 和 Scipy 而構建,是一個用於語義分析、主題建模和向量空間建模的 Python 庫。它提供了主流的 NLP 算法實現,例如 word2vec。Gensim 有自己的 models.wrappers.fasttext 實現,不過仍然可以使用 fasttext 庫進行單詞表示的高效學習。
數據抓取
20. Scrapy(提交:6625,貢獻者:281)
Scrapy 是一個用於創建掃描網站頁面並收集結構化數據的爬蟲的庫。此外,Scrapy 可以從 API 中提取數據。因為具備良好的可擴展性和可移植性,該庫使用起來非常方便。
該庫在過去一年里的變化包括代理服務器的若干次升級以及改進的錯誤通知和問題識別系統。用在元數據設置中的 Scrapy 解析也有了新的特性。
結論
這些是我們列出的 2018 年數據科學 Python 庫的集合。與去年相比,一些新的庫越來越受歡迎,而那些經典庫也正在不斷改進。
下面的表格顯示了這些庫在 Github 上的活動統計信息。
各個庫的鏈接地址:
NumPy:http://www.numpy.org/
SciPy:https://scipy.org/scipylib/
Pandas:https://pandas.pydata.org/
StatsModels:http://www.statsmodels.org/devel/
Matplotlib:https://matplotlib.org/index.html
Seaborn:https://seaborn.pydata.org/
Plotly:https://plot.ly/python/
Bokeh:https://bokeh.pydata.org/en/latest/
Pydot:https://pypi.org/project/pydot/
Scikit-learn:http://scikit-learn.org/stable/
XGBoost:http://xgboost.readthedocs.io/en/latest/
LightGBM:http://lightgbm.readthedocs.io/en/latest/Python-Intro.html
CatBoost:https://github.com/catboost/catboost
Eli5:https://eli5.readthedocs.io/en/latest/
TensorFlow:https://www.tensorflow.org/
PyTorch:https://pytorch.org/
Keras:https://keras.io/
dist-keras:http://joerihermans.com/work/distributed-keras/
elephas:https://pypi.org/project/elephas/
spark-deep-learning:https://databricks.github.io/spark-deep-learning/site/index.html
NLTK:https://www.nltk.org/
SpaCy:https://spacy.io/
Gensim:https://radimrehurek.com/gensim/
Scrapy:https://scrapy.org/