Python在解決數(shù)據(jù)科學(xué)任務(wù)和挑戰(zhàn)方面繼續(xù)處于領(lǐng)先地位。我們的選擇實際上包含了20多個庫,因為其中一些庫是相互替代的,可以解決相同的問題。
1. NumPy(Commits:17911,Contributors:641)
傳統(tǒng)上,我們從科學(xué)應(yīng)用程序庫開始列表,而NumPy是這一領(lǐng)域的主要軟件包之一。它用于處理大型多維數(shù)組和矩陣,并且大量的高級數(shù)學(xué)函數(shù)和實現(xiàn)方法使得可以用這些對象執(zhí)行各種操作。
在這一年里,類庫進行了大量改進。除了錯誤修復(fù)和兼容性問題之外,關(guān)鍵的變化還涉及樣式可能性,即NumPy對象的打印格式。另外,一些函數(shù)現(xiàn)在可以處理Python中可用的任何編碼的文件。
2. SciPy(Commits:19150,Contributors:608)
科學(xué)計算的另一個核心庫是SciPy。它基于NumPy,因此擴展了它的功能。SciPy的主要數(shù)據(jù)結(jié)構(gòu)又是一個由Numpy實現(xiàn)的多維數(shù)組。該軟件包包含幫助解決線性代數(shù),概率論,積分和更多任務(wù)的工具。
SciPy在不斷集成到不同的操作系統(tǒng)、新的功能和方法以及(尤其重要的)更新優(yōu)化器的形式中面臨重大的構(gòu)建改進。此外,還封裝了許多新的BLAS和LAPACK函數(shù)。
3. Pandas(Commits:17144,Contributors:1165)
Pandas是一個Python庫,提供高級數(shù)據(jù)結(jié)構(gòu)和各種分析工具。這個軟件包的重要特點是能夠?qū)⑾喈攺?fù)雜的操作與數(shù)據(jù)轉(zhuǎn)換為一個或兩個命令。熊貓包含許多用于分組,過濾和組合數(shù)據(jù)的內(nèi)置方法,以及時間序列功能。所有這些都伴隨著令人印象深刻的速度指標。
Pandas已有幾個新版本,其中包括數(shù)百個新功能,增強功能,錯誤修復(fù)和API更改。改進的方面包括對數(shù)據(jù)進行分組和排序的能力、更適合應(yīng)用方法的輸出以及對執(zhí)行自定義類型操作的支持。
4. StatsModels(Commits:10067,Contributors:153)
Statsmodels是一個Python模塊,為統(tǒng)計數(shù)據(jù)分析提供了許多機會,例如統(tǒng)計模型估計,執(zhí)行統(tǒng)計測試等。借助其幫助,您可以實現(xiàn)許多機器學(xué)習(xí)方法并探索不同的繪圖可能性。
此類庫不斷發(fā)展,今年帶來了時間序列改進和新計數(shù)模型,即GeneralizedPoisson,zero inflated models和NegativeBinomialP,以及新的多元方法 - 因子分析,多元方差分析和方差分析中的重復(fù)測量。
5. Matplotlib(Commits:25747,Contributors:725)
Matplotlib是一個用于創(chuàng)建二維圖和圖的低級庫。借助它,您可以構(gòu)建不同的圖表,從直方圖和散點圖到非笛卡爾坐標圖。此外,許多流行的繪圖庫被設(shè)計成與matplotlib協(xié)同工作。
在顏色、大小、字體、圖例等方面都有風(fēng)格上的變化。作為外觀改進的一個例子,是對坐標軸圖例的自動對齊,在顯著的色彩改進中,還有一種新的對色盲友好的顏色循環(huán)。
6. Seaborn(Commits:2044,Contributors:83)
Seaborn本質(zhì)上是一個基于matplotlib庫的高級API。它包含更適合處理圖表的默認設(shè)置。此外,還有豐富的可視化庫,包括一些復(fù)雜類型,如時間序列、聯(lián)合情節(jié)和小提琴圖。
seaborn更新主要包括錯誤修復(fù)。然而,F(xiàn)acetGrid或PairGrid之間的兼容性有所改進,增強了交互式matplotlib后端,為可視化添加了參數(shù)和選項。
7. Plotly (Commits: 2906, Contributors: 48)
Plotly是一個流行的庫,允許您輕松構(gòu)建復(fù)雜的圖形。該軟件包適用于交互式web應(yīng)用程序。在它非凡的視覺效果中有輪廓圖、三元圖和3D圖。
該庫不斷增強了新的圖形和特性,帶來了對“多個鏈接視圖”以及動畫和串擾集成的支持。
8. Bokeh (Commits: 16983, Contributors: 294)
Bokeh庫使用JavaScript小部件在瀏覽器中創(chuàng)建交互式和可伸縮的可視化。該庫提供了圖形、樣式可能性、以鏈接圖、添加小部件和定義回調(diào)等形式的交互能力以及許多更有用的特性。
Bokeh可具有改進的交互能力,如分類刻度標簽的旋轉(zhuǎn),以及小型縮放工具和自定義工具提示字段增強功能。
9. Pydot (Commits: 169, Contributors: 12)
Pydot是一個用于生成復(fù)雜的定向圖和非定向圖的庫。它是用純Python編寫的Graphviz接口。在它的幫助下,可以顯示圖形的結(jié)構(gòu),這是在構(gòu)建神經(jīng)網(wǎng)絡(luò)和基于決策樹的算法時經(jīng)常需要的。
10. Scikit-learn (Commits: 22753, Contributors: 1084)
這個基于NumPy和SciPy的Python模塊是處理數(shù)據(jù)的最佳庫之一。它為許多標準的機器學(xué)習(xí)和數(shù)據(jù)挖掘任務(wù)提供算法,如集群、回歸、分類、降維和模型選擇。
有許多增強功能。交叉驗證已經(jīng)被修改,提供了使用多個度量的能力。一些訓(xùn)練方法,比如最近鄰和邏輯回歸,都有一些小的改進。最后,一個主要的更新是完成了通用術(shù)語和API元素的術(shù)語表,這些術(shù)語和API元素熟悉了Scikit-learn中使用的術(shù)語和約定。
11. XGBoost / LightGBM / CatBoost(Commits: 3277 / 1083 / 1509, Contributors: 280 / 79 / 61)
梯度增強算法是最流行的機器學(xué)習(xí)算法之一,它是建立一個連續(xù)精化的基本模型,即決策樹的集合。因此,為了快速方便地實施此方法而設(shè)計了特殊庫。也就是說,我們認為XGBoost,LightGBM和CatBoost值得特別關(guān)注。些庫提供了高度優(yōu)化的、可伸縮的、快速的梯度增強實現(xiàn),這使得它們在數(shù)據(jù)科學(xué)家和Kaggle比賽中非常流行,因為在這些算法的幫助下贏得了許多比賽。
12. Eli5 (Commits: 922, Contributors: 6)
機器學(xué)習(xí)模型預(yù)測的結(jié)果常常并不完全清楚,這是eli5庫幫助處理的挑戰(zhàn)。它是一個用于可視化和調(diào)試機器學(xué)習(xí)模型并逐步跟蹤算法工作的軟件包。它為scikit-learn、XGBoost、LightGBM、lightning和sklearn-crfsuite庫提供支持,并為每個庫執(zhí)行不同的任務(wù)。
13. TensorFlow (Commits: 33339, Contributors: 1469)
TensorFlow是深度和機器學(xué)習(xí)的流行框架,由Google Brain開發(fā)。它提供了使用多個數(shù)據(jù)集的人工神經(jīng)網(wǎng)絡(luò)的能力。最流行的TensorFlow應(yīng)用包括對象識別,語音識別等等。在常規(guī)的TensorFlow(如tflearn、tf-slim、skflow等)上也有不同的分層輔助工具。
這個庫新版本引入新的特性。最新的補丁包括潛在的安全漏洞和改進的TensorFlow和GPU集成,比如您可以在一臺機器上的多個GPU上運行一個Estimator模型。
14. PyTorch (Commits: 11306, Contributors: 635)
PyTorch是一個大型框架,允許您使用GPU加速執(zhí)行張量計算,創(chuàng)建動態(tài)計算圖并自動計算梯度。在此之上,PyTorch提供了一個豐富的API來解決與神經(jīng)網(wǎng)絡(luò)相關(guān)的應(yīng)用。
該庫基于Torch,它是一個開源的深度學(xué)習(xí)庫,在C中用Lua中的包裝器實現(xiàn)。Python API于2017年推出,從那時起,該框架越來越受歡迎,并吸引了越來越多的數(shù)據(jù)科學(xué)家。
15. Keras (Commits: 4539, Contributors: 671)
Keras是一個用于處理神經(jīng)網(wǎng)絡(luò)的高級庫,運行在TensorFlow、Theano之上,現(xiàn)在由于新版本的發(fā)布,也可以使用CNTK和MxNet作為后端。它簡化了許多特定的任務(wù),并且大大減少了monotonous代碼的數(shù)量。然而,它可能不適合一些復(fù)雜的事情。
這個庫面對性能、可用性、文檔和API的改進。其中的一些新功能包括:conv3dlayer、new MobileNet應(yīng)用程序和自規(guī)范化網(wǎng)絡(luò)。
16. Dist-keras / elephas / spark-deep-learning (Commits: 1125 / 170 / 67, Contributors: 5 / 13 / 11)
隨著越來越多的用例需要花費大量的精力和時間,深度學(xué)習(xí)問題變得越來越重要。然而,使用Apache Spark之類的分布式計算系統(tǒng)處理如此大量的數(shù)據(jù)要容易得多,這再次擴展了深入學(xué)習(xí)的可能性。因此,dist-keras、elephas和spark-deep-learning都在迅速流行和發(fā)展,而且很難挑出一個庫,因為它們都是為解決共同的任務(wù)而設(shè)計的。這些包允許您在Apache Spark的幫助下直接訓(xùn)練基于Keras庫的神經(jīng)網(wǎng)絡(luò)。Spark-deep-learning還提供了使用Python神經(jīng)網(wǎng)絡(luò)創(chuàng)建管道的工具。
17. NLTK (Commits: 13041, Contributors: 236)
NLTK是一組庫,一個用于自然語言處理的完整平臺。在NLTK的幫助下,您可以以各種方式處理和分析文本,對文本進行標記和標記,提取信息等。
這個庫的魅力包括api和兼容性的微小變化和CoreNLP的新接口。
18. SpaCy (Commits: 8623, Contributors: 215)
SpaCy是一個具有優(yōu)秀示例、API文檔和演示應(yīng)用程序的自然語言處理庫。庫是用Cython語言編寫的,Cython是Python的C擴展。它支持近30種語言,提供了簡單的深度學(xué)習(xí)集成,保證了魯棒性和高準確性。spaCy的另一個重要特性是為整個文檔處理而設(shè)計的體系結(jié)構(gòu),不會將文檔分解為短語。
19. Gensim (Commits: 3603, Contributors: 273)
Gensim是一個強大的語義分析,主題建模和矢量空間建模的Python庫,建立在Numpy和Scipy之上。它提供了流行的NLP算法的實現(xiàn),如word2vec。盡管gensim擁有自己的models.wrappers.fasttext實現(xiàn),但fasttext庫也可用于高效學(xué)習(xí)詞語表示。
20. Scrapy (Commits: 6625, Contributors: 281)
Scrapy是一個庫,用于創(chuàng)建掃描網(wǎng)站頁面并收集結(jié)構(gòu)化數(shù)據(jù)的蜘蛛程序。另外,Scrapy可以從API中提取數(shù)據(jù)。該庫由于其可擴展性和可移植性而變得非常方便。
今年取得的進展包括代理服務(wù)器的幾次升級和改進的錯誤通知和問題識別系統(tǒng)。在使用scrapy解析的元數(shù)據(jù)設(shè)置中也有新的可能性。
這是我們在2018年豐富的用于數(shù)據(jù)科學(xué)的Python庫集合。與前一年相比,一些新的現(xiàn)代化圖書館越來越受歡迎,而那些已經(jīng)成為數(shù)據(jù)科學(xué)任務(wù)經(jīng)典的庫正在不斷改進。
再次,有一張表格顯示了github活動的詳細統(tǒng)計數(shù)據(jù)。
聯(lián)系客服