2021年值得考慮的15種數(shù)據(jù)科學(xué)工具
企業(yè)數(shù)據(jù)的數(shù)量和復(fù)雜性正不斷增加,同時(shí),數(shù)據(jù)在企業(yè)決策和戰(zhàn)略規(guī)劃中發(fā)揮核心作用,這推動(dòng)著企業(yè)投資于人員、流程和技術(shù),以幫助他們了解其數(shù)據(jù)資產(chǎn)并從中獲得見解。這包括數(shù)據(jù)科學(xué)應(yīng)用程序中常用的各種工具。
市場研究公司IDC估計(jì),在2020年,超過64 ZB的數(shù)據(jù)(相當(dāng)于640億TB)被創(chuàng)建、捕獲、復(fù)制和使用,這是由于受疫情影響,更多的遠(yuǎn)程工作和在線流媒體加速數(shù)據(jù)使用。但是,數(shù)據(jù)分析舉措也發(fā)揮重要作用。在2020年5月IDC公司最初預(yù)測59 ZB時(shí),該公司Global DataSphere預(yù)測高級(jí)副總裁David Reinsel說,持續(xù)的數(shù)據(jù)增長“更多地是由我們所使用和分析的數(shù)據(jù)推動(dòng),而不是我們創(chuàng)建的數(shù)據(jù)。”
當(dāng)建立支持技術(shù)的產(chǎn)品組合時(shí),數(shù)據(jù)科學(xué)團(tuán)隊(duì)可以從多種工具和平臺(tái)中進(jìn)行選擇。下面是15種頂級(jí)數(shù)據(jù)科學(xué)工具,這些工具可能會(huì)在分析過程中為你提供幫助,這些工具按字母順序排列,我們會(huì)詳細(xì)說明它們的功能和特點(diǎn)-以及潛在的局限性。
1. Apache Spark
Apache Spark是開源數(shù)據(jù)處理和分析引擎,可以處理大量數(shù)據(jù)-超過幾PB。自2009年創(chuàng)建以來,Spark迅速處理數(shù)據(jù)的能力推動(dòng)該平臺(tái)的快速發(fā)展,從而使Spark項(xiàng)目成為大數(shù)據(jù)技術(shù)中最大的開源社區(qū)之一。
由于速度快,Spark非常適合連續(xù)智能應(yīng)用程序–以近實(shí)時(shí)處理流數(shù)據(jù)為動(dòng)力。但是,作為通用分布式處理引擎,Spark同樣適用于提取、轉(zhuǎn)換和加載用途以及其他SQL批處理作業(yè)。實(shí)際上,Spark最初被吹捧為MapReduce引擎的更快替代品,用于Hadoop集群中批處理。
Spark仍經(jīng)常與Hadoop一起使用,但也可以獨(dú)立運(yùn)行,用于其他文件系統(tǒng)和數(shù)據(jù)存儲(chǔ)。它具有廣泛的開發(fā)人員庫和API,包括機(jī)器學(xué)習(xí)庫和對關(guān)鍵編程語言的支持,使數(shù)據(jù)科學(xué)家可以更輕松地將該平臺(tái)快速投入使用。
2. D3.js
D3.js是另一個(gè)開源工具,它是一個(gè)JavaScript庫,用于在Web瀏覽器中創(chuàng)建自定義數(shù)據(jù)可視化。通常稱為D3,這代表Data-Driven Documents(數(shù)據(jù)驅(qū)動(dòng)文檔),它使用Web標(biāo)準(zhǔn)(例如HTML、可縮放矢量圖形和CSS),而不是自己的圖形詞匯。D3的開發(fā)人員將其描述為一種動(dòng)態(tài)且靈活的工具,只需最少的工作即可生成數(shù)據(jù)的可視化表示。
D3.js使可視化設(shè)計(jì)人員可以通過Document Object Model將數(shù)據(jù)綁定到文檔,然后使用DOM操作方法對文檔進(jìn)行數(shù)據(jù)驅(qū)動(dòng)的轉(zhuǎn)換。它于2011年首次發(fā)布,可用于設(shè)計(jì)各種類型的數(shù)據(jù)可視化,并支持交互、動(dòng)畫、注釋和定量分析等功能。
但是,D3包含30多個(gè)模塊和1,000種可視化方法,使學(xué)習(xí)變得復(fù)雜。此外,很多數(shù)據(jù)科學(xué)家沒有JavaScript技能。因此,他們可能更喜歡Tableau等商業(yè)可視化工具,這使得D3的主要用戶是數(shù)據(jù)可視化開發(fā)人員和專家(也屬于數(shù)據(jù)科學(xué)團(tuán)隊(duì)的成員)。
3. IBM SPSS
IBM SPSS是用于管理和分析復(fù)雜統(tǒng)計(jì)數(shù)據(jù)的軟件系列。它包括兩個(gè)主要產(chǎn)品:SPSS Statistics–統(tǒng)計(jì)分析、數(shù)據(jù)可視化和報(bào)告工具,以及SPSS Modeler–具有拖放式UI和機(jī)器學(xué)習(xí)功能的數(shù)據(jù)科學(xué)和預(yù)測分析平臺(tái)。
SPSS Statistics涵蓋分析過程的每個(gè)步驟,從計(jì)劃到模型部署,并使用戶能夠闡明變量之間的關(guān)系、創(chuàng)建數(shù)據(jù)點(diǎn)集群、識(shí)別趨勢并進(jìn)行預(yù)測以及其他功能。它可以訪問常見的結(jié)構(gòu)化數(shù)據(jù)類型,并提供菜單驅(qū)動(dòng)的UI,其自身的命令語法以及可集成R和Python擴(kuò)展,還有用于自動(dòng)化流程和導(dǎo)入/導(dǎo)出關(guān)系到SPSS Modeler的功能。
該軟件由SPSS Inc.于1968年創(chuàng)建,最初的名稱是Social Sciences for Social Sciences,該統(tǒng)計(jì)分析軟件于2009年被IBM收購,以及SPSS先前收購的預(yù)測建模平臺(tái)。雖然該產(chǎn)品系列正式稱為IBM SPSS,但該軟件通常仍簡稱為SPSS。
4. Julia
Julia是一種開源的編程語言,用于數(shù)值計(jì)算,以及機(jī)器學(xué)習(xí)和其他類型的數(shù)據(jù)科學(xué)應(yīng)用程序。在2012年發(fā)布Julia的博客文章中,它的四位創(chuàng)建者表示他們在設(shè)計(jì)一種能夠滿足其所有需求的語言。這里的重要的目標(biāo)是,避免用一種語言編寫程序,然后要將其轉(zhuǎn)換為另一種語言來執(zhí)行。
為此,Julia結(jié)合高級(jí)動(dòng)態(tài)語言的便利性以及可與靜態(tài)類型語言(例如C和Java)媲美的性能。用戶不必在程序中定義數(shù)據(jù)類型,盡管他們可以選擇這樣做。在運(yùn)行時(shí)使用多調(diào)度方法也有助于提高執(zhí)行速度。
Julia 1.0于2018年投入使用,這距離該語言的發(fā)布已經(jīng)過去九年。最新版本是1.6,于2021年3月發(fā)布。Julia的文檔指出,由于其編譯器不同于數(shù)據(jù)科學(xué)語言(例如Python和R)中的解釋器,因此新用戶“一開始可能會(huì)發(fā)現(xiàn)Julia的性能不直觀”。但是,它聲稱:“一旦你了解Julia的工作原理,你會(huì)發(fā)現(xiàn)很容易編寫代碼,就像C語言那樣快。”
5. Jupyter Notebook
數(shù)學(xué)家、研究人員和其他用戶之間的交互式協(xié)作。它是一種計(jì)算筆記本工具,可用于創(chuàng)建、編輯和共享代碼以及說明性文本、圖像和其他信息。例如,Jupyter用戶可以將軟件代碼、計(jì)算、注釋、數(shù)據(jù)可視化以及計(jì)算結(jié)果的富媒體表示形式添加到單個(gè)文檔(被稱為notebook)中,然后可以與同事共享并進(jìn)行修改。
因此,根據(jù)Jupyter Notebook的文檔介紹,notebook“可以充當(dāng)數(shù)據(jù)科學(xué)團(tuán)隊(duì)成員之間互動(dòng)會(huì)話的完整計(jì)算記錄”。notebook文檔是具有版本控制功能的JSON文件。此外,Notebook Viewer服務(wù)使它們可以呈現(xiàn)為靜態(tài)網(wǎng)頁,以供未在系統(tǒng)上安裝Jupyter的用戶查看。
Jupyter Notebook的起源是Python編程語言-它最初是IPython交互式工具包開源項(xiàng)目的一部分,然后在2014年被拆分。除支持這三種語言外,Jupyter還為其他數(shù)十種語言提供模塊化內(nèi)核。
6. Keras
Keras是編程接口,使數(shù)據(jù)科學(xué)家可以更輕松地訪問和使用TensorFlow機(jī)器學(xué)習(xí)平臺(tái)。這是用Python編寫的開源深度學(xué)習(xí)API和框架,可在TensorFlow上運(yùn)行,現(xiàn)已集成到該平臺(tái)中。Keras之前支持多個(gè)后端,但從2020年6月的2.4.0版本開始,它僅與TensorFlow綁定。
作為高級(jí)API,Keras被設(shè)計(jì)為驅(qū)動(dòng)簡單快速的實(shí)驗(yàn),與其他深度學(xué)習(xí)選項(xiàng)相比,其所需的編碼更少。正如Keras文檔所說,其目標(biāo)是通過具有“高迭代速度”的開發(fā)過程來加速機(jī)器學(xué)習(xí)模型(特別是深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò))的部署。
Keras框架包括序列接口,用于創(chuàng)建帶有輸入和輸出的相對簡單的線性層堆棧,以及功能性API–用于構(gòu)建更復(fù)雜的層圖或從頭開始編寫深度學(xué)習(xí)模型。Keras模型可以在CPU或GPU上運(yùn)行,并可以跨多個(gè)平臺(tái)進(jìn)行部署,包括Web瀏覽器以及Android和iOS移動(dòng)設(shè)備。
7. Matlab
自1984年以來,Matlab由軟件供應(yīng)商MathWorks開發(fā)和銷售,它是高級(jí)編程語言和分析環(huán)境,用于數(shù)字計(jì)算、數(shù)學(xué)建模和數(shù)據(jù)可視化。傳統(tǒng)工程師和科學(xué)家通常用它來分析數(shù)據(jù)、設(shè)計(jì)算法并開發(fā)嵌入式系統(tǒng)–用于無線通信、工業(yè)控制、信號(hào)處理和其他應(yīng)用,通常與Simulink工具配合使用,該工具提供基于模型的設(shè)計(jì)和仿真功能。
盡管Matlab在數(shù)據(jù)科學(xué)應(yīng)用程序中沒有像Python、R和Julia等語言廣泛使用,但它確實(shí)支持機(jī)器學(xué)習(xí)和深度學(xué)習(xí)、預(yù)測建模、大數(shù)據(jù)分析、計(jì)算機(jī)視覺以及數(shù)據(jù)科學(xué)家所做的其他工作。該平臺(tái)內(nèi)置的數(shù)據(jù)類型和高級(jí)功能旨在加快分析應(yīng)用程序中的探索性數(shù)據(jù)分析和數(shù)據(jù)準(zhǔn)備。
Matlab被認(rèn)為相對容易學(xué)習(xí)和使用,它的全稱是matrix laboratory(矩陣實(shí)驗(yàn)室),它既包含預(yù)構(gòu)建的應(yīng)用程序,又使用戶能夠構(gòu)建自己的應(yīng)用程序。它還具有附加工具箱庫(包含特定學(xué)科軟件),以及數(shù)百種內(nèi)置功能,其中包括以2D和3D圖形形式可視化數(shù)據(jù)的功能。
8. Matplotlib
Matplotlib是開放源Python繪圖庫,用于在分析應(yīng)用程序中讀取、輸入和可視化數(shù)據(jù)。數(shù)據(jù)科學(xué)家和其他用戶可以使用Matplotlib創(chuàng)建靜態(tài)、動(dòng)畫和交互式數(shù)據(jù)可視化,在Python腳本、Python和IPython Shell、Jupyter Notebook、Web應(yīng)用程序服務(wù)器和各種GUI工具包中使用它。
該庫的大型代碼庫可能難以掌握,但是它是以層級(jí)結(jié)構(gòu)構(gòu)建,旨在使用戶能夠構(gòu)建可視化文件–主要使用高級(jí)命令。該層級(jí)結(jié)構(gòu)中最重要的組件是pyplot,這是提供“狀態(tài)機(jī)環(huán)境”的模塊,并且提供一組簡單繪圖功能,類似于Matlab中的功能。
Matplotlib于2003年首次發(fā)布,它還包含面向?qū)ο蟮慕涌?,可以與pyplot一起使用或單獨(dú)使用。它支持低級(jí)命令,用于更復(fù)雜數(shù)據(jù)繪制。該庫主要專注于創(chuàng)建2D可視化,但提供具有3D繪圖功能的附加工具包。
9. Python
Python是數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)領(lǐng)域最廣泛使用的編程語言,并且是最受歡迎的語言之一。 Python開源項(xiàng)目的網(wǎng)站將其描述為“一種具有動(dòng)態(tài)語義的解釋性、面向?qū)ο蟮母呒?jí)編程語言”,以及內(nèi)置數(shù)據(jù)結(jié)構(gòu)以及動(dòng)態(tài)類型和綁定功能。該網(wǎng)站還吹捧Python的簡單語法,稱它易于學(xué)習(xí),并且它對可讀性的強(qiáng)調(diào)可降低程序維護(hù)的成本。
多功能語言可用于多種任務(wù),包括數(shù)據(jù)分析、數(shù)據(jù)可視化、AI、自然語言處理和機(jī)器人過程自動(dòng)化。開發(fā)人員也可以使用Python創(chuàng)建Web、移動(dòng)和桌面應(yīng)用程序。除面向?qū)ο蟮木幊掏猓€支持流程、函數(shù)和其他類型,以及用C或C ++編寫的擴(kuò)展。
不僅數(shù)據(jù)科學(xué)家,程序員和網(wǎng)絡(luò)工程師使用Python,而且計(jì)算專業(yè)人士(從會(huì)計(jì)師到數(shù)學(xué)家和科學(xué)家)也在使用Python,他們常常被它的用戶友好特性所吸引。Python 2.x和3.x都是該語言的生產(chǎn)就緒版本,盡管對2.x系列的支持已于2020年終止。
10. PyTorch
PyTorch是開源框架,用于構(gòu)建和訓(xùn)練基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)模型,PyTorch的擁護(hù)者稱其支持快速靈活的實(shí)驗(yàn)以及向生產(chǎn)部署的無縫過渡。Python庫被設(shè)計(jì)為比Torch更易于使用,Torch是基于Lua編程語言的前身機(jī)器學(xué)習(xí)框架。根據(jù)其創(chuàng)建者的說法,PyTorch還提供比Torch更高的靈活性和速度。
PyTorch于2017年首次公開發(fā)布,它使用類似數(shù)組的張量對模型的輸入、輸出和參數(shù)進(jìn)行編碼。它的張量類似于NumPy支持的多維數(shù)組,這是另一個(gè)用于科學(xué)計(jì)算的Python庫,但是PyTorch添加內(nèi)置支持以在GPU上運(yùn)行模型。NumPy數(shù)組可轉(zhuǎn)換為張量以在PyTorch中進(jìn)行處理,反之亦然。
該庫包含各種功能和技術(shù),其中包括稱為torch.autograd的自動(dòng)差異包和用于構(gòu)建神經(jīng)網(wǎng)絡(luò)的模塊,以及用于部署PyTorch模型的TorchServe工具,還有對iOS和Android設(shè)備的部署支持。除主要的Python API外,PyTorch還提供一種C ++,可用作單獨(dú)的前端接口或創(chuàng)建對Python應(yīng)用程序的擴(kuò)展。
11. R
R編程語言是開源代碼環(huán)境,旨在用于統(tǒng)計(jì)計(jì)算和圖形應(yīng)用程序,以及數(shù)據(jù)處理、分析和可視化。很多數(shù)據(jù)科學(xué)家、學(xué)術(shù)研究人員和統(tǒng)計(jì)學(xué)家都使用R來檢索、清理、分析和呈現(xiàn)數(shù)據(jù),使其成為數(shù)據(jù)科學(xué)和高級(jí)分析中最受歡迎的語言之一。
該開源項(xiàng)目得到R基金會(huì)的支持,并且提供數(shù)以千計(jì)的用戶創(chuàng)建的程序包,這些程序包具有代碼庫可增強(qiáng)R功能-例如,ggplot2,這是用于創(chuàng)建圖形的知名程序包,它是基于R的數(shù)據(jù)科學(xué)工具tidyverse的一部分。此外,多家供應(yīng)商為R提供集成開發(fā)環(huán)境和商業(yè)代碼庫。
R是一種解釋型語言,類似于Python,并且以相對直觀而著稱。它是在1990年代創(chuàng)建,它是S的替代版本,S是1970年代開發(fā)的一種統(tǒng)計(jì)編程語言;R是其兩個(gè)創(chuàng)作者名字的首字母。
12. SAS
SAS是用于統(tǒng)計(jì)分析、高級(jí)分析、BI和數(shù)據(jù)管理的集成軟件套件。該平臺(tái)由軟件供應(yīng)商SAS Institute Inc.開發(fā)和銷售,它使用戶可以集成、清理、準(zhǔn)備和處理數(shù)據(jù),然后可以使用不同的統(tǒng)計(jì)和數(shù)據(jù)科學(xué)技術(shù)對數(shù)據(jù)進(jìn)行分析。SAS可用于各種任務(wù),從基本的BI和數(shù)據(jù)可視化到風(fēng)險(xiǎn)管理、運(yùn)營分析、數(shù)據(jù)挖掘、預(yù)測分析和機(jī)器學(xué)習(xí)。
在1966年北卡羅來納州立大學(xué)開始開發(fā)SAS。1970年代初期,人們對該技術(shù)的使用開始增加,并且SAS Institute于1976年成立,作為一家獨(dú)立公司。該軟件最初是供統(tǒng)計(jì)人員使用-SAS全稱是Statistics Analysis System(統(tǒng)計(jì)分析系統(tǒng))。但是,隨著時(shí)間的流逝,它被擴(kuò)展到包括廣泛的功能,并成為商業(yè)企業(yè)和學(xué)術(shù)界中使用最廣泛的分析套件之一。
現(xiàn)在開發(fā)和營銷工作主要集中在SAS Viya,SAS Viya是該平臺(tái)的基于云的版本,于2016年啟動(dòng),并在2020年進(jìn)行重新設(shè)計(jì)成為云原生。
13. scikit-learn
Scikit-learn是針對Python的開源機(jī)器學(xué)習(xí)庫,它基于SciPy和NumPy科學(xué)計(jì)算庫以及Matplotlib來繪制數(shù)據(jù)。它支持有監(jiān)督的和無監(jiān)督的機(jī)器學(xué)習(xí),并包括很多算法和模型,在scikit-learn術(shù)語中稱為估計(jì)器。此外,它提供功能用于模型擬合、選擇和評(píng)估以及數(shù)據(jù)預(yù)處理和轉(zhuǎn)換。
該庫最初被稱為scikits.learn,在2007年作為Google Summer of Code項(xiàng)目開始,并于2010年首次公開發(fā)布。其名稱的第一部分是SciPy工具箱的縮寫,它也被其他SciPy附加組件使用。Scikit-learn主要適用于存儲(chǔ)在NumPy數(shù)組或SciPy稀疏矩陣中的數(shù)字?jǐn)?shù)據(jù)。
該庫的工具套件還支持其他各種任務(wù),例如數(shù)據(jù)集加載和工作流管道創(chuàng)建–結(jié)合數(shù)據(jù)轉(zhuǎn)換器對象和估計(jì)器。但是由于設(shè)計(jì)限制,scikit-learn也有限制。例如,它不支持深度學(xué)習(xí)、強(qiáng)化學(xué)習(xí)或GPU,并且該庫的網(wǎng)站稱其開發(fā)人員“僅考慮完善的算法用于包含”。
14. TensorFlow
TensorFlow是由谷歌開發(fā)的開源機(jī)器學(xué)習(xí)平臺(tái),人們特別喜歡用它來部署深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)方面。該平臺(tái)采用張量形式的輸入,類似于NumPy多維數(shù)組,然后使用圖結(jié)構(gòu)將數(shù)據(jù)執(zhí)行開發(fā)人員指定的一系列計(jì)算操作。它還提供急切執(zhí)行(eager execution)編程環(huán)境,該環(huán)境獨(dú)立運(yùn)行操作,而無需使用圖形,這為研究和調(diào)試機(jī)器學(xué)習(xí)模型提供更大的靈活性。
谷歌在2015年將TensorFlow開源,并在2017年發(fā)布1.0.0版。TensorFlow使用Python作為其核心編程語言,現(xiàn)在還結(jié)合Keras高級(jí)API來構(gòu)建和訓(xùn)練模型。另外,TensorFlow.js庫支持使用JavaScript開發(fā)模型,并且可以使用C ++構(gòu)建自定義操作(簡稱為ops)。
該平臺(tái)還包括TensorFlow擴(kuò)展模塊,用于端到端部署生產(chǎn)機(jī)器學(xué)習(xí)管道,以及用于移動(dòng)和物聯(lián)網(wǎng)設(shè)備的TensorFlow Lite。TensorFlow模型可以在CPU、GPU和谷歌專用Tensor處理單元進(jìn)行訓(xùn)練和運(yùn)行。
15. Weka
Weka是開源工作臺(tái),它提供一組機(jī)器學(xué)習(xí)算法,可用于數(shù)據(jù)挖掘任務(wù)。Weka的算法被稱為分類器,該算法可以直接應(yīng)用到數(shù)據(jù)集,而無需通過GUI或命令行界面進(jìn)行任何編程以提供附加功能;它們也可以通過Java API部署。
該工作臺(tái)可用于分類、聚類、回歸和關(guān)聯(lián)規(guī)則挖掘應(yīng)用程序,并且還包括一組數(shù)據(jù)預(yù)處理和可視化工具。此外,Weka支持與R、Python、Spark和其他庫(例如scikit-learn)的集成。對于深度學(xué)習(xí)用途,附加軟件包可將其與Eclipse Deeplearning4j庫相結(jié)合。
Weka是GNU通用公共許可證許可的免費(fèi)軟件。1992年在新西蘭Waikato大學(xué)開發(fā)出該軟件;最初的版本用Java進(jìn)行重寫,以創(chuàng)建當(dāng)前的工作臺(tái),該工作臺(tái)于1999年首次發(fā)布。Weka全稱是Waikato Environment for Knowledge Analysis,它也是新西蘭本土一種不會(huì)飛的鳥的名稱,該技術(shù)的開發(fā)人員稱這種鳥具有“好奇的天性”。
數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)平臺(tái)
很多軟件供應(yīng)商也提供商業(yè)許可平臺(tái),這些平臺(tái)可集成功能用于機(jī)器學(xué)習(xí)、AI和其他數(shù)據(jù)科學(xué)應(yīng)用程序。這些產(chǎn)品種類繁多-它們包括機(jī)器學(xué)習(xí)操作中心、自動(dòng)化機(jī)器學(xué)習(xí)平臺(tái)和全功能分析套件,其中有些產(chǎn)品會(huì)結(jié)合這些功能。很多平臺(tái)都包含上面列出的數(shù)據(jù)科學(xué)工具。
Matlab和SAS也可以算作數(shù)據(jù)科學(xué)平臺(tái)。數(shù)據(jù)科學(xué)團(tuán)隊(duì)可以考慮的的其他重要平臺(tái)選項(xiàng)包括:
- Alteryx Analytic Process Automation Platform
- Amazon SageMaker
- Azure Machine Learning
- Databricks Lakehouse Platform
- Dataiku
- DataRobot
- Domino Data Science Platform
- Google Cloud AI Platform
- H2O AI Hybrid Cloud
- IBM Watson Studio
- Knime
- RapidMiner
- Tibco Data Science
有些平臺(tái)還提供免費(fèi)的開源或社區(qū)版本-例如Dataiku和H2O。Knime結(jié)合開源分析平臺(tái)與商業(yè)Knime Server軟件包,該軟件包支持基于團(tuán)隊(duì)的協(xié)作以及工作流自動(dòng)化、部署和管理。