2018年,20大Python數據科學庫都做了哪些更新?
2018年,Python仍然是數據科學領域解決重大任務和挑戰的佼佼者。去年,我們發了一篇博文,列舉了一些被證明是最有用的Python庫。今年,我們擴充了原來的清單,并重新審視之前討論過的庫,重點關注在過去一年內出現的更新。我們對它們進行了分組,排序不分先后,因為真的說不清它們哪個更好。
核心庫與統計
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庫使用JavaScript小部件在瀏覽器中創建交互式和可伸縮的可視化圖形。該庫提供了多種圖形、樣式、鏈接圖形式的交互能力、添加小部件、定義回調以及更多有用的功能。
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/
查看英文原文: https://www.kdnuggets.com/2018/06/top-20-python-libraries-data-science-2018.html
感謝蔡芳芳對本文的審校。
來自:http://www.infoq.com/cn/news/2018/07/20-python-libraries-data