你在一個(gè)外國(guó)餐館,你不熟悉這種文化。 你可能會(huì)問(wèn)服務(wù)員關(guān)于菜單上的文字,他們的意思,甚至在你發(fā)現(xiàn)你將使用什么用具之前的一些問(wèn)題。 因此,在談?wù)摂?shù)據(jù)科學(xué)家最喜歡的工具之前,讓我們弄清楚他們使用的編程語(yǔ)言。
最流行的機(jī)器學(xué)習(xí)語(yǔ)言
你在一個(gè)外國(guó)餐館,你不熟悉這種文化。 你可能會(huì)問(wèn)服務(wù)員關(guān)于菜單上的文字,他們的意思,甚至在你發(fā)現(xiàn)你將使用什么用具之前的一些問(wèn)題。 因此,在談?wù)摂?shù)據(jù)科學(xué)家最喜歡的工具之前,讓我們弄清楚他們使用的編程語(yǔ)言。
這就是為什么我們采訪數(shù)據(jù)科學(xué)從業(yè)者 - 大師,真正考慮他們?yōu)轫?xiàng)目選擇的有用工具。 我們聯(lián)系的專(zhuān)家擁有各種專(zhuān)業(yè)領(lǐng)域,并且在Facebook和三星等公司工作。 其中一些代表AI創(chuàng)業(yè)公司(Objection Co,NEAR.AI和Respeecher); 一些人在大學(xué)任教(哈爾科夫國(guó)立無(wú)線電大學(xué))。
Python:一種流行語(yǔ)言,具有高質(zhì)量的機(jī)器學(xué)習(xí)和數(shù)據(jù)分析庫(kù)
Python是一種通用語(yǔ)言,因其可讀性,良好的結(jié)構(gòu)和相對(duì)溫和的學(xué)習(xí)曲線而備受青睞。根據(jù)1月份進(jìn)行的Stack Overflow年度開(kāi)發(fā)人員調(diào)查,Python可以稱(chēng)為增長(zhǎng)最快的主要編程語(yǔ)言。它排名第七,最受歡迎的語(yǔ)言(38.8%),現(xiàn)在比C#領(lǐng)先一步(34.4%)。
Respeecher Grant Reaber的研究主管,專(zhuān)門(mén)研究應(yīng)用于語(yǔ)音識(shí)別的深度學(xué)習(xí),使用Python作為“幾乎每個(gè)人都將其用于深度學(xué)習(xí)。 Swens for TensorFlow聽(tīng)起來(lái)像一個(gè)很酷的項(xiàng)目,但我們會(huì)等到它更成熟才考慮使用它,“格蘭特總結(jié)道。
NEAR.AI創(chuàng)業(yè)公司的聯(lián)合創(chuàng)始人之前曾在Google Research深入學(xué)習(xí)NLU Illia Polosukhin的團(tuán)隊(duì),他也堅(jiān)持使用Python:“Python始終是數(shù)據(jù)分析的語(yǔ)言,并且隨著時(shí)間的推移變成了事實(shí)所有現(xiàn)代化的圖書(shū)館都為深度學(xué)習(xí)提供語(yǔ)言。“
Python機(jī)器學(xué)習(xí)的一個(gè)用例是模型開(kāi)發(fā),特別是原型設(shè)計(jì)。
AltexSoft的數(shù)據(jù)科學(xué)能力領(lǐng)導(dǎo)者Alexander Konduforov表示,他主要將其用作構(gòu)建機(jī)器學(xué)習(xí)模型的語(yǔ)言。
三星烏克蘭的首席工程師Vitaliy Bulygin認(rèn)為Python是快速原型制作的最佳語(yǔ)言之一。 “在原型設(shè)計(jì)過(guò)程中,我找到了最佳解決方案并用項(xiàng)目所需的語(yǔ)言重寫(xiě),例如C ++,”專(zhuān)家解釋道。
Facebook人工智能研究員Denis Yarats指出,這種語(yǔ)言有一個(gè)非常棒的深度學(xué)習(xí)工具集,如PyTorch框架或NumPy庫(kù)(我們將在本文后面討論)。
C ++:用于CUDA并行計(jì)算的中級(jí)語(yǔ)言
C ++是一種基于C編程語(yǔ)言的靈活的,面向?qū)ο蟮撵o態(tài)類(lèi)型語(yǔ)言。由于其可靠性,性能以及它支持的大量應(yīng)用程序域,該語(yǔ)言在開(kāi)發(fā)人員中仍然很受歡迎。 C ++具有高級(jí)和低級(jí)語(yǔ)言特性,因此被認(rèn)為是一種中級(jí)編程語(yǔ)言。該語(yǔ)言的另一個(gè)應(yīng)用是開(kāi)發(fā)可以在實(shí)時(shí)約束下直接與硬件交互的驅(qū)動(dòng)程序和軟件。由于C ++足夠清晰,可以解釋基本概念,因此它可用于研究和教學(xué)。
數(shù)據(jù)科學(xué)家將這種語(yǔ)言用于各種具體的任務(wù)。哈爾科夫國(guó)家無(wú)線電電子學(xué)院(NURE)的高級(jí)講師Andrii Babii使用C ++在CUDA(一種Nvidia GPU計(jì)算平臺(tái))上并行實(shí)現(xiàn)算法,以加速基于這些算法的應(yīng)用程序。
“當(dāng)我為CUDA編寫(xiě)自定義內(nèi)核時(shí),我需要C ++,”Denis Yarats補(bǔ)充道。
R:統(tǒng)計(jì)計(jì)算和圖形的語(yǔ)言
R是統(tǒng)計(jì),可視化和數(shù)據(jù)分析的語(yǔ)言和環(huán)境,是數(shù)據(jù)科學(xué)家的首選。 它是S編程語(yǔ)言的另一種實(shí)現(xiàn)。
R和寫(xiě)在其中的庫(kù)提供了許多圖形和統(tǒng)計(jì)技術(shù),如經(jīng)典統(tǒng)計(jì)測(cè)試,線性和非線性建模,時(shí)間序列分析,分類(lèi),聚類(lèi)等。您可以使用R機(jī)器學(xué)習(xí)包輕松擴(kuò)展語(yǔ)言。 該語(yǔ)言允許創(chuàng)建高質(zhì)量的圖,包括公式和數(shù)學(xué)符號(hào)。
Alexander Konduforov指出,使用R進(jìn)行機(jī)器學(xué)習(xí)可實(shí)現(xiàn)快速數(shù)據(jù)分析和可視化。
數(shù)據(jù)分析和可視化工具
pandas:一個(gè)增強(qiáng)分析和建模的Python數(shù)據(jù)分析庫(kù)
現(xiàn)在是時(shí)候談?wù)凱ython熊貓了,這是一個(gè)最可愛(ài)名字的免費(fèi)圖書(shū)館。數(shù)據(jù)科學(xué)愛(ài)好者Wes McKinney開(kāi)發(fā)了這個(gè)庫(kù),以便在Python中方便地進(jìn)行數(shù)據(jù)分析和建模。在大熊貓之前,這種編程語(yǔ)言僅適用于數(shù)據(jù)準(zhǔn)備和修改。
pandas通過(guò)將CSV,JSON和TSV數(shù)據(jù)文件或SQL數(shù)據(jù)庫(kù)轉(zhuǎn)換為數(shù)據(jù)框,看起來(lái)像Excel的Python對(duì)象或帶有行和列的SPSS表來(lái)簡(jiǎn)化分析。更重要的是,pandas與IPython工具包和其他庫(kù)相結(jié)合,以提高性能并支持協(xié)同工作。
matplotlib:用于高質(zhì)量可視化的Python機(jī)器學(xué)習(xí)庫(kù)
matplotlib是一個(gè)Python 2D繪圖庫(kù)。繪圖是機(jī)器學(xué)習(xí)數(shù)據(jù)的可視化。 matplotlib源自MATLAB:它的開(kāi)發(fā)人員John D. Hunter模擬了Mathworks的MATLAB軟件中的繪圖命令。
雖然主要使用Python編寫(xiě),但庫(kù)使用NumPy和其他代碼進(jìn)行擴(kuò)展,因此即使用于大型數(shù)組也能很好地執(zhí)行。
matplotlib允許使用幾行代碼生成生產(chǎn)質(zhì)量的可視化。庫(kù)開(kāi)發(fā)人員強(qiáng)調(diào)了它的使用簡(jiǎn)單:“如果要查看數(shù)據(jù)的直方圖,則不需要實(shí)例化對(duì)象,調(diào)用方法,設(shè)置屬性等等;它應(yīng)該工作。“
可以使用seaborn,ggplot和HoloViews等第三方可視化軟件包擴(kuò)展庫(kù)的功能。 專(zhuān)家還可以使用Basemap和cartopy投影和繪圖工具包添加額外的功能。
數(shù)據(jù)科學(xué)從業(yè)者注意到matplotlib的靈活性和集成能力。 例如,Andrii Babii喜歡使用matplotlib和seaborn以及ggplot2。
Denis Yarats(Facebook AI Research)表示他選擇matplotlib主要是因?yàn)樗cPython工具集很好地集成,可以與NumPy庫(kù)或PyTorch機(jī)器學(xué)習(xí)框架一起使用。
Alexander Konduforov和他的AltexSoft團(tuán)隊(duì)也使用matplotlib。 除了大量的Python機(jī)器學(xué)習(xí)庫(kù)(如pandas)以及支持R和Python的Plotly之外,團(tuán)隊(duì)還選擇了dplyr,ggplot2,tidyr和Shiny R庫(kù)。 “這些工具可以免費(fèi)使用,但你必須知道編程至少要使用它們,有時(shí)需要額外的時(shí)間。”
Jupyter Notebook:協(xié)同工作能力
Jupyter Notebook是一個(gè)用于交互式計(jì)算的免費(fèi)Web應(yīng)用程序。有了它,用戶可以使用實(shí)時(shí)代碼創(chuàng)建和共享文檔,開(kāi)發(fā)和執(zhí)行代碼,以及呈現(xiàn)和討論任務(wù)結(jié)果。可以通過(guò)Dropbox,電子郵件,GitHub和Jupyter Notebook Viewer共享文檔,它可以包含圖形和敘述文本。
筆記本電腦功能豐富,提供各種使用場(chǎng)景。
它可以與許多工具集成,例如Apache Spark,pandas和TensorFlow。它支持40多種語(yǔ)言,包括R,Scala,Python和Julia。除了這些功能,Jupyter Notebook還支持容器平臺(tái)--Docker和Kubernetes。
來(lái)自NEAR.AI的Illia Polosukhin表示,他主要使用Jupyter Notebook進(jìn)行自定義臨時(shí)分析:“該應(yīng)用程序允許快速進(jìn)行任何數(shù)據(jù)或模型分析,并能夠連接到遠(yuǎn)程服務(wù)器上的內(nèi)核。您還可以與同事分享最終的筆記本。“
Tableau:強(qiáng)大的數(shù)據(jù)探索功能和交互式可視化
Tableau是一種用于數(shù)據(jù)科學(xué)和商業(yè)智能的數(shù)據(jù)可視化工具。許多特定功能使該軟件有效地解決了各種行業(yè)和數(shù)據(jù)環(huán)境中的問(wèn)題。
通過(guò)數(shù)據(jù)探索和發(fā)現(xiàn),Tableau軟件可以快速?gòu)臄?shù)據(jù)中提取洞察并以可理解的格式呈現(xiàn)它們。它不需要出色的編程技能,可以輕松安裝在各種設(shè)備上。雖然必須編寫(xiě)一個(gè)小腳本,但大多數(shù)操作都是通過(guò)拖放完成的。
Tableau支持實(shí)時(shí)分析和云集成(即與AWS,Salesforce或SAP),允許組合不同的數(shù)據(jù)集和集中數(shù)據(jù)管理。
使用的簡(jiǎn)單性和功能集是數(shù)據(jù)科學(xué)家選擇此工具的原因。 “Tableau具有許多內(nèi)置功能,不需要編碼。 您可以在UI中執(zhí)行大量數(shù)據(jù)預(yù)處理,分析和可視化,從而節(jié)省了大量精力。 但是,你必須購(gòu)買(mǎi)許可證,因?yàn)樗皇敲赓M(fèi)產(chǎn)品,“Alexander Konduforov說(shuō)。
用于一般機(jī)器學(xué)習(xí)的框架
NumPy:使用Python進(jìn)行科學(xué)計(jì)算的擴(kuò)展包
之前提到的NumPy是一個(gè)擴(kuò)展包,用于使用Python執(zhí)行數(shù)值計(jì)算,取代了NumArray和Numeric。 它支持多維數(shù)組(表)和矩陣。 ML數(shù)據(jù)以數(shù)組表示。 矩陣是二維數(shù)字?jǐn)?shù)組。 NumPy包含廣播功能,作為集成C / C ++和Fortran代碼的工具。 其功能還包括傅里葉變換,線性代數(shù)和隨機(jī)數(shù)功能。
數(shù)據(jù)科學(xué)從業(yè)者可以使用NumPy作為存儲(chǔ)多維通用數(shù)據(jù)的有效容器。 通過(guò)定義任意數(shù)據(jù)類(lèi)型的能力,NumPy可以輕松快速地與多種數(shù)據(jù)庫(kù)集成。
scikit-learn:易于使用的機(jī)器學(xué)習(xí)框架,適用于眾多行業(yè)
scikit-learn是一個(gè)開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù),建立在SciPy(Scientific Python),NumPy和matplotlib之上。
最初由David Cournapeau于2007年開(kāi)始作為Google Summer of Code項(xiàng)目,scikit-learn目前由志愿者維護(hù)。截至今天,已有1,092人參與其中。
該庫(kù)專(zhuān)為生產(chǎn)用途而設(shè)計(jì)。簡(jiǎn)單,定性代碼,協(xié)作選項(xiàng),性能以及用簡(jiǎn)單語(yǔ)言編寫(xiě)的大量文檔有助于其在各種專(zhuān)家中的流行。
scikit-learn為用戶提供了許多成熟的算法,用于監(jiān)督和無(wú)監(jiān)督學(xué)習(xí)。來(lái)自Machine Learning Mastery的數(shù)據(jù)科學(xué)從業(yè)者Jason Brownlee指出,該庫(kù)側(cè)重于建模數(shù)據(jù),而不是其加載,操作和摘要。他建議使用NumPy和pandas來(lái)實(shí)現(xiàn)這三個(gè)功能。
Denis Yarats使用NumPy,pandas和scikit-learn進(jìn)行一般機(jī)器學(xué)習(xí):“我喜歡它們的簡(jiǎn)潔性和透明度。這些工具被廣泛采用并且許多人多年來(lái)一直在進(jìn)行戰(zhàn)斗測(cè)試,這也很有幫助。“
“AltexSoft數(shù)據(jù)科學(xué)團(tuán)隊(duì)主要使用像scikit-learn和xgboost這樣的Python庫(kù)來(lái)進(jìn)行分類(lèi)和回歸任務(wù),”Aleksander觀察道。
Andrii Babii更喜歡使用sc語(yǔ)言學(xué)習(xí)R語(yǔ)言庫(kù)和包。 “我正在使用這種組合,因?yàn)樗情_(kāi)源的,具有很強(qiáng)的功能并相互補(bǔ)充,”數(shù)據(jù)科學(xué)家解釋道。
NLTK:基于Python的人類(lèi)語(yǔ)言數(shù)據(jù)處理平臺(tái)
NLTK是一個(gè)用于開(kāi)發(fā)Python程序以使用人類(lèi)語(yǔ)言的平臺(tái)。
Aleksander Konduforov更喜歡這個(gè)工具用于NLP任務(wù)。 “NLTK幾乎是Python中用于文本處理的標(biāo)準(zhǔn)庫(kù),它具有許多有用的功能。 例如,不同類(lèi)型的文本,句子和文字處理,詞性標(biāo)注,句子結(jié)構(gòu)分析,命名實(shí)體識(shí)別,文本分類(lèi),情感分析等等。 所有這些庫(kù)都是免費(fèi)的,并提供足夠的功能來(lái)解決我們的大部分任務(wù),“專(zhuān)家指出。
用于神經(jīng)網(wǎng)絡(luò)建模的ML框架
TensorFlow:用于大規(guī)模機(jī)器學(xué)習(xí)的靈活框架
TensorFlow是一個(gè)開(kāi)源軟件庫(kù),用于2015年谷歌人工智能組織內(nèi)Google Brain團(tuán)隊(duì)開(kāi)發(fā)和發(fā)布的機(jī)器學(xué)習(xí)和深度神經(jīng)網(wǎng)絡(luò)研究。
該庫(kù)的一個(gè)重要特征是數(shù)值計(jì)算是由包含節(jié)點(diǎn)和邊的數(shù)據(jù)流圖完成的。 節(jié)點(diǎn)表示數(shù)學(xué)運(yùn)算,并且邊是多維數(shù)據(jù)陣列或張量,在其上執(zhí)行這些操作。
TensorFlow非常靈活,可用于各種計(jì)算平臺(tái)(CPU,GPU和TPU)和設(shè)備,從臺(tái)式機(jī)到服務(wù)器集群,再到移動(dòng)和邊緣系統(tǒng)。它可以在Mac,Windows和Linux上運(yùn)行。
該框架的另一個(gè)優(yōu)點(diǎn)是它可用于研究和重復(fù)的機(jī)器學(xué)習(xí)任務(wù)。
TensorFlow擁有豐富的開(kāi)發(fā)工具,尤其適用于Android。三星烏克蘭首席工程師Vitaliy Bulygin表示,“如果你需要在Android上實(shí)現(xiàn)某些功能,請(qǐng)使用TensorFlow。”
Objection Co的首席執(zhí)行官Curtis Boyd表示,他的團(tuán)隊(duì)選擇使用TensorFlow進(jìn)行機(jī)器學(xué)習(xí),因?yàn)樗情_(kāi)源的并且非常容易集成。
由Google開(kāi)源的兩款A(yù)IY套件讓個(gè)人可以輕松獲得人工智能。 這兩個(gè)套件專(zhuān)注于計(jì)算機(jī)視覺(jué)和語(yǔ)音助理,是一個(gè)小型自組裝紙板箱,配有所需的所有組件。
如果你想更加了解TensorFlow,或者說(shuō)想實(shí)踐一下人工智能項(xiàng)目,谷歌的另一款工具或許可以幫到你,也就是谷歌的AIY Projects項(xiàng)目。 AIY Vision Kit附帶的軟件運(yùn)行三個(gè)基于TensorFlow的神經(jīng)網(wǎng)絡(luò)。 其中一個(gè)基于谷歌的MobileNets平臺(tái),能夠識(shí)別超過(guò)1,000個(gè)日常物品。 第二個(gè)可以在圖像中發(fā)現(xiàn)面部和表情。 最后一個(gè)是專(zhuān)門(mén)用于識(shí)別貓,狗和人的神經(jīng)網(wǎng)絡(luò)。
TensorBoard:模型訓(xùn)練可視化的好工具
TensorBoard是一套工具,用于TensorFlow中機(jī)器學(xué)習(xí)的不同方面和階段的圖形表示。
TensorBoard讀取TensorFlow事件文件,其中包含在TensorFlow運(yùn)行時(shí)生成的摘要數(shù)據(jù)(有關(guān)模型特定操作的觀察)。
用圖表顯示的模型結(jié)構(gòu)允許研究人員確保模型組件位于需要的位置并正確連接。
使用圖形可視化工具,用戶可以探索模型抽象的不同層,放大和縮小模式的任何部分。 TensorBoard可視化的另一個(gè)重要好處是相同類(lèi)型和類(lèi)似結(jié)構(gòu)的節(jié)點(diǎn)涂有相同的顏色。用戶還可以查看按設(shè)備著色(CPU,GPU或兩者的組合),使用“跟蹤輸入”功能突出顯示特定節(jié)點(diǎn),并一次可視化一個(gè)或多個(gè)圖表。
這種可視化方法使TensorBoard成為模型性能評(píng)估的流行工具,尤其適用于深層神經(jīng)網(wǎng)絡(luò)等復(fù)雜結(jié)構(gòu)模型。
Grant Reaber指出,TensorBoard可以輕松監(jiān)控模型培訓(xùn)。 Grant和他的團(tuán)隊(duì)也使用此工具進(jìn)行自定義可視化。
Illia Polosukhin也選擇了TensorBoard。 “TensorBoard在模型開(kāi)發(fā)過(guò)程中顯示指標(biāo),并允許對(duì)模型做出決策。例如,監(jiān)控模型在調(diào)整其超參數(shù)并選擇性能最佳時(shí)的表現(xiàn)非常方便,“總結(jié)了Illia。
除了顯示性能指標(biāo)外,TensorBoard還可以向用戶顯示許多其他信息,如直方圖,音頻,文本和圖像數(shù)據(jù),分布,嵌入和標(biāo)量。
-
AI
+關(guān)注
關(guān)注
87文章
31000瀏覽量
269335 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8422瀏覽量
132743
原文標(biāo)題:機(jī)器學(xué)習(xí)工具,哪個(gè)語(yǔ)言最適合程序員入門(mén)AI?
文章出處:【微信號(hào):IV_Technology,微信公眾號(hào):智車(chē)科技】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論