標簽: Bokeh, Data Science, Keras, Matplotlib, NLTK, numpy, Pandas, Plotly, Python, PyTorch, scikit-learn, SciPy, Seaborn, TensorFlow, XGBoost
原文作者: ActiveWizards
原文地址:Top 20 Python Libraries for Data Science in 2018
Python今年依舊保持著數(shù)據(jù)科學領(lǐng)域的領(lǐng)先地位。去年,我們在博客上列出了15個頂級Python數(shù)據(jù)科學庫的榜單,當時大家都覺得非常好。這次,介紹一下這些頂級數(shù)據(jù)科學Python庫今年有哪些更新,同時,我們還為這個榜單添加了一些新庫。
實際上,這次的榜單不止20個庫,主要是因為現(xiàn)在某些領(lǐng)域里有多個庫都能解決相同的問題,而且暫時也不好說哪個庫能成為領(lǐng)頭羊,因此,我們將這些庫分為一組,供大家選擇。
核心庫與統(tǒng)計庫
1. NumPy (提交修改: 17911, 貢獻者: 641)
按慣例,本榜單首先列出科學應(yīng)用庫,Numpy是這一類的首選,它是處理大型多維數(shù)組、矩陣及高級數(shù)學函數(shù)的工具集合,提供了多種數(shù)據(jù)操作方法。
今年,Numpy進行了很多改進。除了修復(fù)Bug和加強兼容性外,關(guān)鍵的改進是增加了可選樣式,即Numpy對象的打印格式。此外,還增加了新的功能,只要是Python支持的編碼,Numpy就可以處理使用這些編碼的文件。
2. SciPy (提交修改: 19150, 貢獻者: 608)
科學計算的的另一個核心庫是SciPy。SciPy基于Numpy,擴展了Numpy的功能,它的核心數(shù)據(jù)結(jié)構(gòu)是用Numpy實現(xiàn)的多維數(shù)組。這個庫包含了一組處理線性代數(shù)、概率論、積分學等任務(wù)的工具。
SciPy的主要改進包括對不同操作系統(tǒng)的集成,增加了新的函數(shù)與方法,值得一提的是,SciPy更新了優(yōu)化器。此外,還打包了不少新的BLAS[1]和LAPACK[2]函數(shù)。
3. Pandas (提交修改: 17144, 貢獻者: 1165)
Pandas提供了高層數(shù)據(jù)結(jié)構(gòu)和大量的分析工具。這個庫最牛的地方是可以用一兩條命令實現(xiàn)很多復(fù)雜的數(shù)據(jù)分析操作。Pandas內(nèi)建了很多方法,比如分組、篩選、合并數(shù)據(jù)及時間序列等功能,并且,這些操作的運算速度都非常快。
今年,Pandas進行了數(shù)百項優(yōu)化,包括增加了新特性、修復(fù)了Bug、改進了API。這些優(yōu)化主要集中在提升Pandas分組和排序數(shù)據(jù)的能力,提供了更適用的apply方法的輸出結(jié)果,還為操作自定義類型提供了支持。
4. StatsModels (提交修改: 10067, 貢獻者: 153)
Statsmodels是進行統(tǒng)計數(shù)據(jù)分析的Python模塊,比如,評估統(tǒng)計模型、執(zhí)行統(tǒng)計測試等。有了Statsmodels,就可以實現(xiàn)很多機器學習方法,探索不同圖形的繪圖可能性。
Statsmodels還在不斷開發(fā)升級,將來會提供越來越多的新特性。今年,Statsmodels引入了時間序列和新的技術(shù)模型,如,廣義泊松、零膨脹模型、負二項式分布等,它還提供了一些新的多元方法,如,因子分析、多元方差分析(MANOVA)和方差分析(ANOVA)的重復(fù)測量等。
可視化
5. Matplotlib (提交修改: 25747, 貢獻者: 725)
Matplotlib是創(chuàng)建二維圖形的底層庫。使用Matplotlib可以創(chuàng)建直方圖、散點圖、非笛卡爾坐標圖等多種圖形,并且,大部分流行繪圖庫都與Matplotlib兼容,可以進行交互操作。
今年,Matplotlib優(yōu)化了顏色、字體、尺寸、圖例等樣式。比如,它對外觀的優(yōu)化包括了自動對齊圖例,還改進了色彩,新采用的色相環(huán)即便是色盲也可以看。
6. Seaborn (提交修改: 2044, 貢獻者: 83)
Seaborn是基于Matplotlib開發(fā)的高層API,與Matplotlib相比,它提供了更多實用的默認圖形,包括諸如時間序列、Jointplot和小提琴圖這樣的可視化圖。
2018年上半年,Seaborn的升級主要是修復(fù)Bug。同時,還改進了FaceGrid和PairGrid與Matplotlib增強型交互后端的兼容性,并為可視化圖增加了參數(shù)和選項。
7. Plotly (提交修改: 2906, 貢獻者: 48)
使用Plotly可以輕易地生成復(fù)雜的圖形,這個庫可以用來開發(fā)交互式的網(wǎng)頁應(yīng)用,還可以生成非常華麗的等高線圖、三角圖及3D圖。
今年,Plotly的優(yōu)化主要在于提供了很多新的圖形和特性,引入了對動畫與串擾集成等多重鏈接視圖的支持。
8. Bokeh (提交修改: 16983, 貢獻者: 294)
Bokeh使用JavaScript Widget,用于創(chuàng)建可在瀏覽器中查看的交互式、矢量化的可視化圖。通過鏈接圖形、添加Widget和回調(diào)函數(shù)等實用特性,Bokeh提供了很多圖形、樣式以及交互功能。
Bokeh今年優(yōu)化的交互功能還是可圈可點的,比如說,旋轉(zhuǎn)式類別圖例標簽,縮放工具、增強型自定義工具提示字段等。
9. Pydot (提交修改: 169, 貢獻者: 12)
Pydot是生成復(fù)雜定向圖與非定向圖的庫,它是Python開發(fā)的Graphviz[3]接口。有了Pydot,就可以展示結(jié)構(gòu)化的圖形,構(gòu)建神經(jīng)網(wǎng)絡(luò)圖與基于算法的決策樹等圖形。
機器學習
10. scikit-learn (提交修改: 22753, 貢獻者: 1084)
scikit-learn是最強大的數(shù)據(jù)處理庫之一,它是基于Numpy和SciPy的Python模塊。scikit-learn提供了很多標準機器學習與數(shù)據(jù)挖掘算法,比如,分類、聚類、回歸、降維與模型選擇等。
2018年上半年,scikit-learn做了很多改進。優(yōu)化了交叉驗證,使其可以使用一個以上的指標;完善了最近鄰和邏輯回歸等幾個訓(xùn)練方法;還有一點是終于推出了通用術(shù)語與API元素術(shù)語表,有了這個術(shù)語表就可以很方便地了解scikit-learn的專業(yè)術(shù)語和使用約定。
11. XGBoost / LightGBM / CatBoost (提交修改: 3277 / 1083 / 1509, 貢獻者: 280 / 79 / 61)
梯度增強是機器學習里最流行的算法,這個算法是基于決策樹等持續(xù)精化的基本模型集合構(gòu)建的。因此,現(xiàn)在出現(xiàn)了一些為了快速、便捷實現(xiàn)這種方法而設(shè)計的專用庫。我們認為 XGBoost、LightGBM與CatBoost值得特別關(guān)注。它們都是解決梯度增強問題的競爭者,使用方式也幾乎相同。XGBoost這幾個庫提供了高度優(yōu)化、可擴展、可快速實現(xiàn)的梯度增強算法,這些優(yōu)勢讓它們在現(xiàn)在的數(shù)據(jù)科學界里非常流行;甚至,由于其算法對贏得Kaggle比賽有很大幫助,現(xiàn)在很多參賽者也喜歡用這些庫來解決Kaggle比賽問題。
12. Eli5 (提交修改: 922, 貢獻者: 6)
機器學習模型預(yù)測的結(jié)果往往并不一目了然,無法讓人輕易就能理解,Eli5就是為了解決這一痛點而開發(fā)的。Eli5用于將機器學習模型進行可視化,并進行Debug,可以一步一步追蹤算法的執(zhí)行步驟。Eli5支持scikit-learn、XGBoost、LightGBM、lightning和sklearn-crfsuite等庫,能夠為這些庫執(zhí)行不同的監(jiān)控任務(wù)。
深度學習
13. TensorFlow (提交修改: 33339, 貢獻者: 1469)
TensorFlow是谷歌大腦開發(fā)的、超級火爆的深度學習與機器學習框架,它使用人工神經(jīng)網(wǎng)絡(luò)處理多重數(shù)據(jù)集。TensorFlow廣泛應(yīng)用于對象識別、語音識別等業(yè)務(wù),現(xiàn)在還出現(xiàn)了不少基于TensorFlow創(chuàng)建的高層輔助器,比如tflearn、tf-slim和skflow等。
TensorFlow還在快速迭代,今年發(fā)布了不少更新版本,提供了很多新特性。比如,最新的版本修復(fù)了潛在的安全隱患,改進了TensorFlow與GPU的集成,可以讓TensorFlow在一臺機器上使用多個GPU運行評估期模型。
14. PyTorch (提交修改: 11306, 貢獻者: 635)
PyTorch是一個大型框架,允許用戶使用GPU加速張量計算、創(chuàng)建動態(tài)計算圖、自動計算梯度值。PyTorch還提供了豐富的API接口,用于解決神經(jīng)網(wǎng)絡(luò)的相關(guān)應(yīng)用。
PyTorch是基于Torch這個開源深度學習開源庫創(chuàng)建的,2017年才引入了Python API接口。從那時起,PyTorch就變得非常流行,吸引了越來越多的數(shù)據(jù)科學家用戶。
15. Keras (提交修改: 4539, 貢獻者: 671)
Keras是運行在TensorFlow和Theano之上的高層神經(jīng)網(wǎng)絡(luò)庫,最新版本還可以將CNTK和MxNet作為后端。Keras簡化了任務(wù)操作,大大地減少了編寫代碼的工作量。然而,對于一些復(fù)雜的任務(wù),Keras并不是十分適用。
今年,Keras優(yōu)化了性能、可用性、文檔和API,增加了Conv3D轉(zhuǎn)置層、MobileNet應(yīng)用與自歸一網(wǎng)絡(luò)等新特性。
分布式深度學習
16. Dist-keras / elephas / spark-deep-learning (提交修改: 1125 / 170 / 67, 貢獻者: 5 / 13 / 11)
如今,越來越多的用例處理工作需要消耗極為龐大的資源與時間,因此,大規(guī)模數(shù)據(jù)的深度學習問題已經(jīng)變得非常嚴峻了。然而,隨著Apache Spark等分布式計算系統(tǒng)拓展到深度學習領(lǐng)域,處理這種大規(guī)模數(shù)據(jù)就變得簡單了。因此,dist-keras、elephas和spark-deep-learning這樣的庫很快就應(yīng)運而生,開發(fā)速度也非常快。只不過這些庫現(xiàn)在都旨在解決同樣的問題,目前還看不出來誰能夠脫穎而出。這些庫可以通過Keras直接調(diào)用Apache Spark訓(xùn)練神經(jīng)網(wǎng)絡(luò),Spark-deep-learning還提供了構(gòu)建Python神經(jīng)網(wǎng)絡(luò)管道的工具。
自然語言處理
17. NLTK (提交修改: 13041, 貢獻者: 236)
NLTK是自然語言處理的平臺。可以使用NLTK處理、分析文本,進行分詞、標記、信息提取等工作,還可以使用NLTK搭建原型和調(diào)研系統(tǒng)。
NLTK今年的改進不多,主要是優(yōu)化了API和兼容性,以及提供了一個新的CoreNLP的接口。
18. SpaCy (提交修改: 8623, 貢獻者: 215)
SpaCy這個自然語言處理庫提供了很多好用的例程、API文檔和應(yīng)用Demo。SpaCy是使用Cython開發(fā)的,支持超過30種語言,可以輕松地與深度學習集成,還能保證穩(wěn)健、精準的結(jié)果。
SpaCy還有一個非常實用的特性,就是它的設(shè)計架構(gòu)很好,不需要將文檔分段就可以處理整個文檔。
19. Gensim (提交修改: 3603, 貢獻者: 273)
Gensim是基于Numpy和Scipy的Python庫,可以進行語義分析、主題建模和向量空間建模。它提供了word2vec等NLP算法。雖然Gensim有自己的models.wrappers.fasttext,但是fasttext這個庫也可以用于高效的詞表征學習。
數(shù)據(jù)采集
20. Scrapy (提交修改: 6625, 貢獻者: 281)
Scrapy是用來構(gòu)建爬蟲機器人掃描網(wǎng)頁,采集結(jié)構(gòu)化數(shù)據(jù)的Python庫,Scrapy還可以通過API提取數(shù)據(jù)。Scrapy支持擴展和移植,用起來非常順手。
今年Scrapy有很多升級,優(yōu)化了Proxy服務(wù)器,改進了錯誤提示與問題識別系統(tǒng),推出了使用Scrapy解析元數(shù)據(jù)設(shè)置的新功能。
結(jié)論
以上就是我們的2018年上半年的Python數(shù)據(jù)科學庫榜單。與去年相比,經(jīng)典的數(shù)據(jù)科學庫仍在不斷地完善、優(yōu)化,與此同時,這個領(lǐng)域里也出現(xiàn)了不少新興的數(shù)據(jù)科學庫。
最后,給大家呈上Github上這些庫的活躍表。
ActiveWizards是由數(shù)據(jù)科學家和數(shù)據(jù)工程師組成的團隊,關(guān)注于大數(shù)據(jù)、數(shù)據(jù)科學、機器學習、數(shù)據(jù)可視化等數(shù)據(jù)項目。我們的核心專業(yè)領(lǐng)域包括數(shù)據(jù)科學(數(shù)據(jù)研究、機器學習算法與數(shù)據(jù)開發(fā)),數(shù)據(jù)可視化(D3.js、Tableau等)、大數(shù)據(jù)開發(fā)(Hadoop、Spark、Kafka、Cassandra、HBASE、MongoDB等)及數(shù)據(jù)密集型Web應(yīng)用開發(fā)(RESTful API、Flask、Django和Meteor等)。
-
BLAS的全稱是Basic Linear Algebra Subprograms,即基礎(chǔ)線性代數(shù)子程序,是一系列API規(guī)范,如向量、矩陣之間的乘法等。 ?
-
LAPACK的全稱是linear algebra package,即線性代數(shù)庫,其底層是BLAS,在此基礎(chǔ)上定義了很多矩陣和向量高級運算的函數(shù),如矩陣分解、求逆和求奇異值等。LAPACK是科學計算(矩陣運算)的接口規(guī)范,運行效率比BLAS更高。 ?
-
Graphviz是一個知名的繪制網(wǎng)絡(luò)圖、軟件工程、數(shù)據(jù)庫、網(wǎng)頁設(shè)計及機器學習架構(gòu)圖的可視化工具。 ?