20個機器學習工具,哪個語言最適合程式設計師入門AI?(上)

訓練有素的士兵無法空手執行任務。 數據科學家擁有自己的武器 - 機器學習(ML)軟件。 已經有大量文章列出了可靠的機器學習工具,並對其功能進行了深入的描述。 然而,我們的目標是獲得行業專家的反饋。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

這就是為什麼我們採訪數據科學從業者 - 大師,真正考慮他們為項目選擇的有用工具。 我們聯繫的專家擁有各種專業領域,並且在Facebook和三星等公司工作。 其中一些代表AI創業公司(Objection Co,NEAR.AI和Respeecher); 一些人在大學任教(哈爾科夫國立無線電大學)。

最流行的機器學習語言

你在一個外國餐館,你不熟悉這種文化。 你可能會問服務員關於菜單上的文字,他們的意思,甚至在你發現你將使用什麼用具之前的一些問題。 因此,在談論數據科學家最喜歡的工具之前,讓我們弄清楚他們使用的編程語言。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

Python:一種流行語言,具有高質量的機器學習和數據分析庫

Python是一種通用語言,因其可讀性,良好的結構和相對溫和的學習曲線而備受青睞。根據1月份進行的Stack Overflow年度開發人員調查,Python可以稱為增長最快的主要編程語言。它排名第七,最受歡迎的語言(38.8%),現在比C#領先一步(34.4%)。

Respeecher Grant Reaber的研究主管,專門研究應用於語音識別的深度學習,使用Python作為“幾乎每個人都將其用於深度學習。 Swens for TensorFlow聽起來像一個很酷的項目,但我們會等到它更成熟才考慮使用它,“格蘭特總結道。

NEAR.AI創業公司的聯合創始人之前曾在Google Research深入學習NLU Illia Polosukhin的團隊,他也堅持使用Python:“Python始終是數據分析的語言,並且隨著時間的推移變成了事實所有現代化的圖書館都為深度學習提供語言。“

Python機器學習的一個用例是模型開發,特別是原型設計。

AltexSoft的數據科學能力領導者Alexander Konduforov表示,他主要將其用作構建機器學習模型的語言。

三星烏克蘭的首席工程師Vitaliy Bulygin認為Python是快速原型製作的最佳語言之一。 “在原型設計過程中,我找到了最佳解決方案並用項目所需的語言重寫,例如C ++,”專家解釋道。

Facebook人工智能研究員Denis Yarats指出,這種語言有一個非常棒的深度學習工具集,如PyTorch框架或NumPy庫(我們將在本文後面討論)。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

C ++:用於CUDA並行計算的中級語言

C ++是一種基於C編程語言的靈活的,面向對象的靜態類型語言。由於其可靠性,性能以及它支持的大量應用程序域,該語言在開發人員中仍然很受歡迎。 C ++具有高級和低級語言特性,因此被認為是一種中級編程語言。該語言的另一個應用是開發可以在實時約束下直接與硬件交互的驅動程序和軟件。由於C ++足夠清晰,可以解釋基本概念,因此它可用於研究和教學。

數據科學家將這種語言用於各種具體的任務。哈爾科夫國家無線電電子學院(NURE)的高級講師Andrii Babii使用C ++在CUDA(一種Nvidia GPU計算平臺)上並行實現算法,以加速基於這些算法的應用程序。

“當我為CUDA編寫自定義內核時,我需要C ++,”Denis Yarats補充道。

R:統計計算和圖形的語言

R是統計,可視化和數據分析的語言和環境,是數據科學家的首選。 它是S編程語言的另一種實現。

R和寫在其中的庫提供了許多圖形和統計技術,如經典統計測試,線性和非線性建模,時間序列分析,分類,聚類等。您可以使用R機器學習包輕鬆擴展語言。 該語言允許創建高質量的圖,包括公式和數學符號。

Alexander Konduforov指出,使用R進行機器學習可實現快速數據分析和可視化。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

數據分析和可視化工具

pandas:一個增強分析和建模的Python數據分析庫

現在是時候談談Python熊貓了,這是一個最可愛名字的免費圖書館。數據科學愛好者Wes McKinney開發了這個庫,以便在Python中方便地進行數據分析和建模。在大熊貓之前,這種編程語言僅適用於數據準備和修改。

pandas通過將CSV,JSON和TSV數據文件或SQL數據庫轉換為數據框,看起來像Excel的Python對象或帶有行和列的SPSS表來簡化分析。更重要的是,pandas與IPython工具包和其他庫相結合,以提高性能並支持協同工作。

matplotlib:用於高質量可視化的Python機器學習庫

matplotlib是一個Python 2D繪圖庫。繪圖是機器學習數據的可視化。 matplotlib源自MATLAB:它的開發人員John D. Hunter模擬了Mathworks的MATLAB軟件中的繪圖命令。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

雖然主要使用Python編寫,但庫使用NumPy和其他代碼進行擴展,因此即使用於大型數組也能很好地執行。

matplotlib允許使用幾行代碼生成生產質量的可視化。庫開發人員強調了它的使用簡單:“如果要查看數據的直方圖,則不需要實例化對象,調用方法,設置屬性等等;它應該工作。“

可以使用seaborn,ggplot和HoloViews等第三方可視化軟件包擴展庫的功能。 專家還可以使用Basemap和cartopy投影和繪圖工具包添加額外的功能。

數據科學從業者注意到matplotlib的靈活性和集成能力。 例如,Andrii Babii喜歡使用matplotlib和seaborn以及ggplot2。

Denis Yarats(Facebook AI Research)表示他選擇matplotlib主要是因為它與Python工具集很好地集成,可以與NumPy庫或PyTorch機器學習框架一起使用。

Alexander Konduforov和他的AltexSoft團隊也使用matplotlib。 除了大量的Python機器學習庫(如pandas)以及支持R和Python的Plotly之外,團隊還選擇了dplyr,ggplot2,tidyr和Shiny R庫。 “這些工具可以免費使用,但你必須知道編程至少要使用它們,有時需要額外的時間。”

Jupyter Notebook:協同工作能力

Jupyter Notebook是一個用於交互式計算的免費Web應用程序。有了它,用戶可以使用實時代碼創建和共享文檔,開發和執行代碼,以及呈現和討論任務結果。可以通過Dropbox,電子郵件,GitHub和Jupyter Notebook Viewer共享文檔,它可以包含圖形和敘述文本。

筆記本電腦功能豐富,提供各種使用場景。

它可以與許多工具集成,例如Apache Spark,pandas和TensorFlow。它支持40多種語言,包括R,Scala,Python和Julia。除了這些功能,Jupyter Notebook還支持容器平臺--Docker和Kubernetes。

來自NEAR.AI的Illia Polosukhin表示,他主要使用Jupyter Notebook進行自定義臨時分析:“該應用程序允許快速進行任何數據或模型分析,並能夠連接到遠程服務器上的內核。您還可以與同事分享最終的筆記本。“

Tableau:強大的數據探索功能和交互式可視化

Tableau是一種用於數據科學和商業智能的數據可視化工具。許多特定功能使該軟件有效地解決了各種行業和數據環境中的問題。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

通過數據探索和發現,Tableau軟件可以快速從數據中提取洞察並以可理解的格式呈現它們。它不需要出色的編程技能,可以輕鬆安裝在各種設備上。雖然必須編寫一個小腳本,但大多數操作都是通過拖放完成的。

Tableau支持實時分析和雲集成(即與AWS,Salesforce或SAP),允許組合不同的數據集和集中數據管理。

使用的簡單性和功能集是數據科學家選擇此工具的原因。 “Tableau具有許多內置功能,不需要編碼。 您可以在UI中執行大量數據預處理,分析和可視化,從而節省了大量精力。 但是,你必須購買許可證,因為它不是免費產品,“Alexander Konduforov說。

用於一般機器學習的框架

NumPy:使用Python進行科學計算的擴展包

之前提到的NumPy是一個擴展包,用於使用Python執行數值計算,取代了NumArray和Numeric。 它支持多維數組(表)和矩陣。 ML數據以數組表示。 矩陣是二維數字數組。 NumPy包含廣播功能,作為集成C / C ++和Fortran代碼的工具。 其功能還包括傅里葉變換,線性代數和隨機數功能。

數據科學從業者可以使用NumPy作為存儲多維通用數據的有效容器。 通過定義任意數據類型的能力,NumPy可以輕鬆快速地與多種數據庫集成。

scikit-learn:易於使用的機器學習框架,適用於眾多行業

scikit-learn是一個開源的Python機器學習庫,建立在SciPy(Scientific Python),NumPy和matplotlib之上。

最初由David Cournapeau於2007年開始作為Google Summer of Code項目,scikit-learn目前由志願者維護。截至今天,已有1,092人參與其中。

該庫專為生產用途而設計。簡單,定性代碼,協作選項,性能以及用簡單語言編寫的大量文檔有助於其在各種專家中的流行。

scikit-learn為用戶提供了許多成熟的算法,用於監督和無監督學習。來自Machine Learning Mastery的數據科學從業者Jason Brownlee指出,該庫側重於建模數據,而不是其加載,操作和摘要。他建議使用NumPy和pandas來實現這三個功能。

Denis Yarats使用NumPy,pandas和scikit-learn進行一般機器學習:“我喜歡它們的簡潔性和透明度。這些工具被廣泛採用並且許多人多年來一直在進行戰鬥測試,這也很有幫助。“

“AltexSoft數據科學團隊主要使用像scikit-learn和xgboost這樣的Python庫來進行分類和迴歸任務,”Aleksander觀察道。

Andrii Babii更喜歡使用sc語言學習R語言庫和包。 “我正在使用這種組合,因為它是開源的,具有很強的功能並相互補充,”數據科學家解釋道。

NLTK:基於Python的人類語言數據處理平臺

NLTK是一個用於開發Python程序以使用人類語言的平臺。

Aleksander Konduforov更喜歡這個工具用於NLP任務。 “NLTK幾乎是Python中用於文本處理的標準庫,它具有許多有用的功能。 例如,不同類型的文本,句子和文字處理,詞性標註,句子結構分析,命名實體識別,文本分類,情感分析等等。 所有這些庫都是免費的,並提供足夠的功能來解決我們的大部分任務,“專家指出。

用於神經網絡建模的ML框架

TensorFlow:用於大規模機器學習的靈活框架

TensorFlow是一個開源軟件庫,用於2015年穀歌人工智能組織內Google Brain團隊開發和發佈的機器學習和深度神經網絡研究。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

該庫的一個重要特徵是數值計算是由包含節點和邊的數據流圖完成的。 節點表示數學運算,並且邊是多維數據陣列或張量,在其上執行這些操作。

TensorFlow非常靈活,可用於各種計算平臺(CPU,GPU和TPU)和設備,從臺式機到服務器集群,再到移動和邊緣系統。它可以在Mac,Windows和Linux上運行。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

該框架的另一個優點是它可用於研究和重複的機器學習任務。

TensorFlow擁有豐富的開發工具,尤其適用於Android。三星烏克蘭首席工程師Vitaliy Bulygin表示,“如果你需要在Android上實現某些功能,請使用TensorFlow。”

Objection Co的首席執行官Curtis Boyd表示,他的團隊選擇使用TensorFlow進行機器學習,因為它是開源的並且非常容易集成。

由Google開源的兩款AIY套件讓個人可以輕鬆獲得人工智能。 這兩個套件專注於計算機視覺和語音助理,是一個小型自組裝紙板箱,配有所需的所有組件。

20個機器學習工具,哪個語言最適合程序員入門AI?(上)

如果你想更加了解TensorFlow,或者說想實踐一下人工智能項目,谷歌的另一款工具或許可以幫到你,也就是谷歌的AIY Projects項目。 AIY Vision Kit附帶的軟件運行三個基於TensorFlow的神經網絡。 其中一個基於谷歌的MobileNets平臺,能夠識別超過1,000個日常物品。 第二個可以在圖像中發現面部和表情。 最後一個是專門用於識別貓,狗和人的神經網絡。

TensorBoard:模型訓練可視化的好工具

TensorBoard是一套工具,用於TensorFlow中機器學習的不同方面和階段的圖形表示。

TensorBoard讀取TensorFlow事件文件,其中包含在TensorFlow運行時生成的摘要數據(有關模型特定操作的觀察)。

用圖表顯示的模型結構允許研究人員確保模型組件位於需要的位置並正確連接。

使用圖形可視化工具,用戶可以探索模型抽象的不同層,放大和縮小模式的任何部分。 TensorBoard可視化的另一個重要好處是相同類型和類似結構的節點塗有相同的顏色。用戶還可以查看按設備著色(CPU,GPU或兩者的組合),使用“跟蹤輸入”功能突出顯示特定節點,並一次可視化一個或多個圖表。

這種可視化方法使TensorBoard成為模型性能評估的流行工具,尤其適用於深層神經網絡等複雜結構模型。

Grant Reaber指出,TensorBoard可以輕鬆監控模型培訓。 Grant和他的團隊也使用此工具進行自定義可視化。

Illia Polosukhin也選擇了TensorBoard。 “TensorBoard在模型開發過程中顯示指標,並允許對模型做出決策。例如,監控模型在調整其超參數並選擇性能最佳時的表現非常方便,“總結了Illia。

除了顯示性能指標外,TensorBoard還可以向用戶顯示許多其他信息,如直方圖,音頻,文本和圖像數據,分佈,嵌入和標量。


分享到:


相關文章: