转载来源
公众号:论智
来源:semanti.ca
“
阅读本文大概需要 3 分钟。
”
编者按:semanti.ca 整理的数据科学、机器学习 IDE 概览,涵盖 R、Python、Scala、Julia.
IDE 提供的丰富特性对软件开发极为有用,大大提高了程序员的生活质量。这一点同样适用于数据科学家。然而,因为数据科学家除了可以选择传统的 IDE,还可以选择 Jupyter notebook 这样在浏览器中运行的新工具。因此,数据科学家——特别是刚入门数据科学的新手——可能会困惑该使用哪个开发环境。
本文我们将根据数据科学家最常使用的四种编程语言(R、Python、Scala、Julia),推荐相应的 IDE。
我们将根据 semanti.ca 的数据科学家和机器学习工程师的使用情况,排序每种语言推荐的 IDE。
Python
PyCharm
PyCharm 是 JetBrains 出品的跨平台的 Python IDE。
PyCharm 为 Python 提供了一流的支持,包括代码补全、错误检测、在线代码修正。智能搜索可以跳转至任意类、文件、符号,甚至是IDE行动或工具窗口。一次点击即可切换声明、超方法、测试、用法、实现,等等。
PyCharm 包括很多工具,集成的调试器和测试运行器,性能调试工具,内置终端,集成主要版本控制系统(包括 Git、SVN、Mercurial),远程开发(远程解释器),集成 ssh 终端,集成 Docker 和 Vagrant。
PyCharm 集成了 Jupyter Notebook,具备一个交互 Python 控制台,并支持 Anaconda 以及多种科学计算包,包括 Matplotlib 和 NumPy。
PyCharm 的暗色主题效果不错,对许多 semanti.ca 的数据科学家和开发者而言,这是一项巨大的优势。
https://www.jetbrains.com/pycharm/
Spyder
Spyder 是主要为科学家、工程师、数据分析师设计的强大科学环境。这一全面的开发工具提供了高级的编辑、分析、调试、性能调试功能,以及数据探索、交互执行、深度检查、可视化功能。Spyder 可以通过插件和 API 进一步扩展功能。
Spyder 的多语言编辑器具有函数/类浏览器,代码分析工具,自动代码补全,横向/纵向分割,跳转到定义等功能。
Spyder 自身也是用 Python 编写的。
https://www.spyder-ide.org/
R
RStudio
RStudio 是 R 下特性最丰富的 IDE。它既有供桌面使用的开源版本和商业版本(Windows、Mac、Linux),又可以在浏览器中使用(基于运行 RStudio Server 或 RStudio Server Pro 的 Linux 服务器)。
RStudio 提供代码高亮、代码补全、智能缩进等功能。在源代码编辑器中可以直接执行 R 代码。开发者可以迅速地跳转到函数定义,阅读帮助和文档,方便地基于项目管理多个工作目录。集成的数据查看器可供查看表格数据,在调试模式下结合逐步执行可以实时检查数据是如何更新的。
RStudio 集成了 Git 和 SVN 支持,同时支持编写 HTML、PDF、Word 文档、幻灯片、交互式图形(基于 Shiny 和 ggvis)。
https://www.rstudio.com/
Eclipse 的 StatET 插件
Eclipse 是最流行的 Java IDE 之一。通过安装插件,它可以支持其他编程语言。StatET 是一个基于 Eclipse 的 R IDE。它提供了编写 R 代码和构建 R 软件包的一组工具,包括集成的 R 控制台、对象浏览器、包管理起、调试器、数据查看器、R 帮助系统,并支持本地和远程安装的多个 R 版本。可选的 Sweave 和 Wikitext(Markdown 和 Textile)附加组件提供了带有 R 代码段的 LaTeX / Wikitext 文档的源代码编辑器和构建工具。
代码编辑器提供了语法高亮,折叠 Roxygen 注释、函数定义、其他代码块,自动修正行缩进,输入和粘贴的自动缩进等功能。
内建的调试器可以很方便地管理断点和条件断点。调试器提供了一个清晰的调用栈,可以直接访问选定的变量、源代码和指令指针,当然也支持逐步执行源代码。
StatET 还包括一个数据查看器,可供查看向量、矩阵、dataframe,可以快速显示很大的表格。
http://www.walware.de/goto/statet
R Tools for Visual Studio
Visual Studio 是 .NET、C 最常使用的 IDE。R Tools for Visual Studio(RTVS)是一个基于 MIT 许可发布的自由、开源的 Visual Studio 扩展。
在 Visual Studio 下,数据科学家能够以便利的结构组织和管理相关文件,并使用 R 代码、R 文档、R Markdown、SQL 请求、保存的过程等的模板。同时提供了包管理器和 SQL Server 集成。
RTVS 可以绑定本地和远程的工作区,这让开发者可以在本地基于较小的数据集编写 R 代码,然后很方便地在更强大的云计算机中的更大的数据集上运行代码。
和任何现代的 IDE 一样,RTVS 包括语法高亮、代码格式化、签名帮助、跳转到定义、查找所有引用、代码片段功能。
开发者可以通过 R Markdown 文档分享数据结果,markdown 的代码段可以使用集成的 R 代码。
RTVS 为 R 提供了完整的 REPL 体验,可以在交互窗口中直接运行源文件的代码。
绘图是 R 的一个重要部分。为了方便用 R 绘图,RTVS 支持多个独立的绘图窗口,每个具有独立的历史,并支持在窗口间移动图形。图形可以保存为图像或 PDF 文件,或者复制到剪贴板。
变量探索器可供检查全局作用域和指定包的作用域中的变量,还能查看可排序的表格,并导出至 CSV。
https://github.com/Microsoft/RTVS
Jupyter Notebook 的 R 核心
和许多数据科学家设想的不同,Jupyter 并不局限于使用 Python:notebook 应用是语言无关的,这意味着它可以使用其他编程语言。
加载 IRKernel 并启用后,就可以在 notebook 环境下使用 R 了。
https://irkernel.github.io/
R-Brain
R-Brain 提供了一个数据科学云平台(也可自行部署在内部服务器上)。R-Brain 基于 Jupyter,提供了 IDE、控制台、notebook、markdown 的集成环境(支持 R 和 Python)。它也集成了代码补全、调试、打包、发布功能。
R-Brain 以灵活的用户界面提供了经典的 Jupyter notebook 的标准功能(交互式 notebook、终端、文本编辑器、文件浏览器、丰富的输出形式,等等)。它使用了 Docker 容器技术,所以这一解决方案可以方便地部署在云上或内部服务器上。
数据科学家可以开发、打包、分享、发布分析工作区,数据集,用 R、Python、SQL 编写的应用。R-Brain 同样提供了便利的交互浏览数据库纲要、查看表格内容、导出数据的功能。
https://r-brain.io
Scala
Scala IDE for Eclipse
Scala IDE for Eclipse 为开发纯 Scala 应用及 Scala-Java 混合应用提供了高级编辑、调试支持,可以在 Scala 和 Java 引用之间跳转。
和任何现代 IDE 一样,它具备代码补全、代码语义高亮、跳转到定义功能。它可以实时捕捉编译错误(在你输入代码的同时)。
Scala 调试器可供在闭包间跳转,并提供了为Scala定制的调试信息。
Scala 向导简化了类、对象、特质(trait)、包的创建过程。重构功能可以让你修改标识符名,组织引入,提取部分代码为新方法,等等。
Scala IDE 的特性还包括代码格式化,智能缩进器,标记文件内的任意标识符,完整的语法高亮支持(包括注释、控制结构、嵌入的 XML),代码折叠。
http://scala-ide.org/
IntelliJ IDEA 的 Scala插件
IntelliJ IDEA 是另一个 JetBrains 出品的知名 IDE。Scala 插件使 IntelliJ IDE 可以支持 Scala、SBT、Scala.js、Hocon、Play 框架。
Scala 插件支持以下特性:代码辅助(高亮、补全、格式化、重构),浏览,查找,类型和隐式转换信息。该插件同样支持 SBT 等构建工具,ScalaTest、Specs2、uTest 等测试框架。还有 Scala 调试器、工作表、Ammonite 脚本。
https://plugins.jetbrains.com/plugin/1347-scala
Jupyter Notebooks
Scala 或 Apache Toree 核心相当容易安装,都具有增加 Maven / SBT 依赖和JAR 的功能。和 Python、R 一样,notebook 中的单元可以分别运行,这让数据科学家可以训练一次模型后多次使用。
单元支持可以 markdown(含 LaTeX 公式支持),这让数据科学家可以使用 notebook 作为和客户、同事分享的报告。
和其他语言一样,使用 Jupyter Notebook 的不足在于核心容易出错或功能有限,非常有限的调试功能,甚至没有调试功能。数据科学家需要仔细地组织他们的单元,否则可能导致很多困惑。
- Scale 核心:http://almond-sh.github.io/almond/stable/docs/intro
- Apache Toree: https://github.com/apache/incubator-toree
Julia
Juno
Juno 使用 Julia 这一结合了易用和性能的语言构建。Juno 的目标是移除编程的沮丧和猜测,将乐趣带回编程。Juno 的混合风格结合了 notebook 的探索能力和 IDE 的高效。
Juno 基于 GitHub 出品的 Atom 编辑器,继承了 Atom 强大的编辑功能和美观的用户界面。
Juno 同时包含 Julia 和 Atom 包,以提供 Julia 特定的增强,例如语法高亮,绘图面板,集成 Julia 调试器 Gallium,运行代码的控制台,等等。
它的定制性很强,具备面向高级用户的特性,例如多光标、模糊文件搜索、vim键绑定。
http://junolab.org/
Jupyter Notebooks
IJulia 提供了 Julia 语言后端,可以让你在 Jupyter Notebook 中使用 Julia 语言。IJulia 允许定制 Julia 运行环境,安装额外的 Julia 核心。IJulia 还有一个贴心的功能,当你输入 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、代码补全、悬浮提示、代码检查、代码导航等功能,以及用于运行测试、构建、性能评测、构建文档的 Visual Studio Code 任务。
https://marketplace.visualstudio.com/items?itemName=julialang.language-julia
原文地址:https://semanti.ca/blog/?recommended-ide-for-data-scientists-and-machine-learning-engineers