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