編者按:semanti.ca整理的數(shù)據(jù)科學(xué)、機器學(xué)習(xí)IDE概覽,涵蓋R、Python、Scala、Julia.
IDE提供的豐富特性對軟件開發(fā)極為有用,大大提高了程序員的生活質(zhì)量。這一點同樣適用于數(shù)據(jù)科學(xué)家。然而,因為數(shù)據(jù)科學(xué)家除了可以選擇傳統(tǒng)的IDE,還可以選擇Jupyter notebook這樣在瀏覽器中運行的新工具。因此,數(shù)據(jù)科學(xué)家——特別是剛?cè)腴T數(shù)據(jù)科學(xué)的新手——可能會困惑該使用哪個開發(fā)環(huán)境。
本文我們將根據(jù)數(shù)據(jù)科學(xué)家最常使用的四種編程語言(R、Python、Scala、Julia),推薦相應(yīng)的IDE。
我們將根據(jù)semanti.ca的數(shù)據(jù)科學(xué)家和機器學(xué)習(xí)工程師的使用情況,排序每種語言推薦的IDE。
Python
PyCharm
PyCharm是JetBrains出品的跨平臺的Python IDE。
PyCharm為Python提供了一流的支持,包括代碼補全、錯誤檢測、在線代碼修正。智能搜索可以跳轉(zhuǎn)至任意類、文件、符號,甚至是IDE行動或工具窗口。一次點擊即可切換聲明、超方法、測試、用法、實現(xiàn),等等。
PyCharm包括很多工具,集成的調(diào)試器和測試運行器,性能調(diào)試工具,內(nèi)置終端,集成主要版本控制系統(tǒng)(包括Git、SVN、Mercurial),遠程開發(fā)(遠程解釋器),集成ssh終端,集成Docker和Vagrant。
PyCharm集成了Jupyter Notebook,具備一個交互Python控制臺,并支持Anaconda以及多種科學(xué)計算包,包括Matplotlib和NumPy。
PyCharm的暗色主題效果不錯,對許多semanti.ca的數(shù)據(jù)科學(xué)家和開發(fā)者而言,這是一項巨大的優(yōu)勢。
https://www.jetbrains.com/pycharm/
Spyder
Spyder是主要為科學(xué)家、工程師、數(shù)據(jù)分析師設(shè)計的強大科學(xué)環(huán)境。這一全面的開發(fā)工具提供了高級的編輯、分析、調(diào)試、性能調(diào)試功能,以及數(shù)據(jù)探索、交互執(zhí)行、深度檢查、可視化功能。Spyder可以通過插件和API進一步擴展功能。
Spyder的多語言編輯器具有函數(shù)/類瀏覽器,代碼分析工具,自動代碼補全,橫向/縱向分割,跳轉(zhuǎn)到定義等功能。
Spyder自身也是用Python編寫的。
https://www.spyder-ide.org/
R
RStudio
RStudio是R下特性最豐富的IDE。它既有供桌面使用的開源版本和商業(yè)版本(Windows、Mac、Linux),又可以在瀏覽器中使用(基于運行RStudio Server或RStudio Server Pro的Linux服務(wù)器)。
RStudio提供代碼高亮、代碼補全、智能縮進等功能。在源代碼編輯器中可以直接執(zhí)行R代碼。開發(fā)者可以迅速地跳轉(zhuǎn)到函數(shù)定義,閱讀幫助和文檔,方便地基于項目管理多個工作目錄。集成的數(shù)據(jù)查看器可供查看表格數(shù)據(jù),在調(diào)試模式下結(jié)合逐步執(zhí)行可以實時檢查數(shù)據(jù)是如何更新的。
RStudio集成了Git和SVN支持,同時支持編寫HTML、PDF、Word文檔、幻燈片、交互式圖形(基于Shiny和ggvis)。
https://www.rstudio.com/
Eclipse的StatET插件
Eclipse是最流行的Java IDE之一。通過安裝插件,它可以支持其他編程語言。StatET是一個基于Eclipse的R IDE。它提供了編寫R代碼和構(gòu)建R軟件包的一組工具,包括集成的R控制臺、對象瀏覽器、包管理起、調(diào)試器、數(shù)據(jù)查看器、R幫助系統(tǒng),并支持本地和遠程安裝的多個R版本。可選的Sweave和Wikitext(Markdown和Textile)附加組件提供了帶有R代碼段的LaTeX/Wikitext文檔的源代碼編輯器和構(gòu)建工具。
代碼編輯器提供了語法高亮,折疊Roxygen注釋、函數(shù)定義、其他代碼塊,自動修正行縮進,輸入和粘貼的自動縮進等功能。
內(nèi)建的調(diào)試器可以很方便地管理斷點和條件斷點。調(diào)試器提供了一個清晰的調(diào)用棧,可以直接訪問選定的變量、源代碼和指令指針,當(dāng)然也支持逐步執(zhí)行源代碼。
StatET還包括一個數(shù)據(jù)查看器,可供查看向量、矩陣、dataframe,可以快速顯示很大的表格。
http://www.walware.de/goto/statet
R Tools for Visual Studio
Visual Studio是.NET、C++最常使用的IDE。R Tools for Visual Studio(RTVS)是一個基于MIT許可發(fā)布的自由、開源的Visual Studio擴展。
在Visual Studio下,數(shù)據(jù)科學(xué)家能夠以便利的結(jié)構(gòu)組織和管理相關(guān)文件,并使用R代碼、R文檔、R Markdown、SQL請求、保存的過程等的模板。同時提供了包管理器和SQL Server集成。
RTVS可以綁定本地和遠程的工作區(qū),這讓開發(fā)者可以在本地基于較小的數(shù)據(jù)集編寫R代碼,然后很方便地在更強大的云計算機中的更大的數(shù)據(jù)集上運行代碼。
和任何現(xiàn)代的IDE一樣,RTVS包括語法高亮、代碼格式化、簽名幫助、跳轉(zhuǎn)到定義、查找所有引用、代碼片段功能。
開發(fā)者可以通過R Markdown文檔分享數(shù)據(jù)結(jié)果,markdown的代碼段可以使用集成的R代碼。
RTVS為R提供了完整的REPL體驗,可以在交互窗口中直接運行源文件的代碼。
繪圖是R的一個重要部分。為了方便用R繪圖,RTVS支持多個獨立的繪圖窗口,每個具有獨立的歷史,并支持在窗口間移動圖形。圖形可以保存為圖像或PDF文件,或者復(fù)制到剪貼板。
變量探索器可供檢查全局作用域和指定包的作用域中的變量,還能查看可排序的表格,并導(dǎo)出至CSV。
https://github.com/Microsoft/RTVS
Jupyter Notebook的R核心
和許多數(shù)據(jù)科學(xué)家設(shè)想的不同,Jupyter并不局限于使用Python:notebook應(yīng)用是語言無關(guān)的,這意味著它可以使用其他編程語言。
加載IRKernel并啟用后,就可以在notebook環(huán)境下使用R了。
https://irkernel.github.io/
R-Brain
R-Brain提供了一個數(shù)據(jù)科學(xué)云平臺(也可自行部署在內(nèi)部服務(wù)器上)。R-Brain基于Jupyter,提供了IDE、控制臺、notebook、markdown的集成環(huán)境(支持R和Python)。它也集成了代碼補全、調(diào)試、打包、發(fā)布功能。
R-Brain以靈活的用戶界面提供了經(jīng)典的Jupyter notebook的標(biāo)準功能(交互式notebook、終端、文本編輯器、文件瀏覽器、豐富的輸出形式,等等)。它使用了Docker容器技術(shù),所以這一解決方案可以方便地部署在云上或內(nèi)部服務(wù)器上。
數(shù)據(jù)科學(xué)家可以開發(fā)、打包、分享、發(fā)布分析工作區(qū),數(shù)據(jù)集,用R、Python、SQL編寫的應(yīng)用。R-Brain同樣提供了便利的交互瀏覽數(shù)據(jù)庫綱要、查看表格內(nèi)容、導(dǎo)出數(shù)據(jù)的功能。
https://r-brain.io
Scala
Scala IDE for Eclipse
Scala IDE for Eclipse為開發(fā)純Scala應(yīng)用及Scala-Java混合應(yīng)用提供了高級編輯、調(diào)試支持,可以在Scala和Java引用之間跳轉(zhuǎn)。
和任何現(xiàn)代IDE一樣,它具備代碼補全、代碼語義高亮、跳轉(zhuǎn)到定義功能。它可以實時捕捉編譯錯誤(在你輸入代碼的同時)。
Scala調(diào)試器可供在閉包間跳轉(zhuǎn),并提供了為Scala定制的調(diào)試信息。
Scala向?qū)Ш喕祟?、對象、特質(zhì)(trait)、包的創(chuàng)建過程。重構(gòu)功能可以讓你修改標(biāo)識符名,組織引入,提取部分代碼為新方法,等等。
Scala IDE的特性還包括代碼格式化,智能縮進器,標(biāo)記文件內(nèi)的任意標(biāo)識符,完整的語法高亮支持(包括注釋、控制結(jié)構(gòu)、嵌入的XML),代碼折疊。
http://scala-ide.org/
IntelliJ IDEA的Scala插件
IntelliJ IDEA是另一個JetBrains出品的知名IDE。Scala插件使IntelliJ IDE可以支持Scala、SBT、Scala.js、Hocon、Play框架。
Scala插件支持以下特性:代碼輔助(高亮、補全、格式化、重構(gòu)),瀏覽,查找,類型和隱式轉(zhuǎn)換信息。該插件同樣支持SBT等構(gòu)建工具,ScalaTest、Specs2、uTest等測試框架。還有Scala調(diào)試器、工作表、Ammonite腳本。
https://plugins.jetbrains.com/plugin/1347-scala
Jupyter Notebooks
Scala或Apache Toree核心相當(dāng)容易安裝,都具有增加Maven/SBT依賴和JAR的功能。和Python、R一樣,notebook中的單元可以分別運行,這讓數(shù)據(jù)科學(xué)家可以訓(xùn)練一次模型后多次使用。
單元支持可以markdown(含LaTeX公式支持),這讓數(shù)據(jù)科學(xué)家可以使用notebook作為和客戶、同事分享的報告。
和其他語言一樣,使用Jupyter Notebook的不足在于核心容易出錯或功能有限,非常有限的調(diào)試功能,甚至沒有調(diào)試功能。數(shù)據(jù)科學(xué)家需要仔細地組織他們的單元,否則可能導(dǎo)致很多困惑。
Scale核心:http://almond-sh.github.io/almond/stable/docs/intro
Apache Toree: https://github.com/apache/incubator-toree
Julia
Juno
Juno使用Julia這一結(jié)合了易用和性能的語言構(gòu)建。Juno的目標(biāo)是移除編程的沮喪和猜測,將樂趣帶回編程。Juno的混合風(fēng)格結(jié)合了notebook的探索能力和IDE的高效。
Juno基于GitHub出品的Atom編輯器,繼承了Atom強大的編輯功能和美觀的用戶界面。
Juno同時包含Julia和Atom包,以提供Julia特定的增強,例如語法高亮,繪圖面板,集成Julia調(diào)試器Gallium,運行代碼的控制臺,等等。
它的定制性很強,具備面向高級用戶的特性,例如多光標(biāo)、模糊文件搜索、vim鍵綁定。
http://junolab.org/
Jupyter Notebooks
IJulia提供了Julia語言后端,可以讓你在Jupyter Notebook中使用Julia語言。IJulia允許定制Julia運行環(huán)境,安裝額外的Julia核心。IJulia還有一個貼心的功能,當(dāng)你輸入IPython魔法命令時,IJulia會提示效果相似的Julia代碼。例如,輸入%load filename會提示你使用IJulia.load("filename")。
https://github.com/JuliaLang/IJulia.jl
Visual Studio Code的Julia擴展
Visual Studio Code的Julia擴展提供了語法高亮、代碼片段、LaTex片段、Julia特定命令、集成REPL、代碼補全、懸浮提示、代碼檢查、代碼導(dǎo)航等功能,以及用于運行測試、構(gòu)建、性能評測、構(gòu)建文檔的Visual Studio Code任務(wù)。
https://marketplace.visualstudio.com/items?itemName=julialang.language-julia
-
編程語言
+關(guān)注
關(guān)注
10文章
1942瀏覽量
34707 -
機器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8406瀏覽量
132560 -
數(shù)據(jù)科學(xué)
+關(guān)注
關(guān)注
0文章
165瀏覽量
10053
原文標(biāo)題:數(shù)據(jù)科學(xué)、機器學(xué)習(xí)IDE概覽
文章出處:【微信號:jqr_AI,微信公眾號:論智】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論