快捷搜索:

您的位置:澳门新葡4473网站 > 项目 > 数据科学中R VS Python:获胜者是...

数据科学中R VS Python:获胜者是...

发布时间:2020-04-15 13:11编辑:项目浏览(155)

    Norm Matloff 是加州大学戴维斯分校的计算机科学教授,他针对数据科学界常年争论的要点,作了一篇关于 R 和 Python 的对比分析。

    数据科学中R VS Python:获胜者是…

    在”最佳”数据科学工具的比赛中,R和Python都有自己的优缺点.对二者的选择取决于使用背景,学习花费和其他常用工具的需要

    Martijn Theuwissen发表于DataCamp.

    在DataCamp,学生经常问我们他们日常数据分析任务使用R或Python。虽然我们主要是提供交互式R教程,我们总是回答这个问题取决于他们所面对的数据分析挑战的类型。
    R和Python都是流行的统计编程语言.R的功能由统计学家开发(想想R强大的数据可视化能力),Python常常被称赞为易于理解的语法.

    本文中,我们重点介绍R和Python的不同,以及二者如何在数据科学和统计世界中占有位置的.如果你更喜欢视觉展现,确保检查出相应的信息图表”数据科学的战争:R vs Python“.

    在分析开始之前,Matloff 先抛出自己可能带有的潜在偏见:他写过 4 本与 R 相关的书,在 useR! 和其他 R 的会议上做过演讲,并且目前担任 R 期刊的主编。但同时他也用 Python 敲过多年代码。Matloff 希望自己的分析能够被认为是公平且有帮助的。

    R的介绍

    Ross Ihaka 和 Robert Gentleman 1995年创建开源语言R作为S编程语言的实现.其目的是开发一个提供更好更人性化数学据分析,统计和图形模型的语言.最初,R主要是在学术和研究中使用,最近其余也开始使用R.这使得R成为全球发展最快的统计语言.

    R的主要优势的其强大的社区,通过邮件列表,用户贡献文档和一个非常活跃的Stack Overflow小组提供支持.还有CRAN,一个用户可以轻松贡献R包的巨大资源库.这些软件包是一个R函数和数据的集合,可以马上访问最新技术和功能,不需要从头开始开发.

    最后,如果你是一个有经验的程序员,学习R可能并不难.然而作为一个初学者,你可能会感觉到非常纠结.幸运的是,有许多你可以咨询的当下的学习资源.

    接着,这位专业的计算机科学家和统计学家从以下几方面对 R 和 Python 做出了对比:

    Python的介绍

    Python是由Guido van Rossum 1991年创建,强调效率和代码的可读性。希望深入的数据分析或应用统计技术的程序员一些Python用于统计的主要用户。

    你越接近在工程环境中工作,越有可能更喜欢Python。它是一种灵活的语言,并让其专注于可读性和简单性,它的学习曲线是比较低的。

    与R类似,Python同样有包。PyPI是Python包的索引,由用户贡献的库组成。就像R,Python有一个伟大的社区,但它有点分散,因为它是一个通用的语言。然而,Python中数据科学正在迅速声称在Python世界中更占优势的地位:预期正在成长,更具创新性的科学数据的应用程序将在这里看到自己的起源。

    优雅

    Python 明显胜出。

    当然这是主观的。但是在不同编程语言的对比之下,Python 大大减少了括号的使用:

    if x > y: 
       z = 5
       w = 8
    

    vs.

    if (x > y)
    { 
       z = 5
       w = 8
    }
    

    Python 很时尚!

    R和Python:通用量

    在网络上,你可以找到许多比较R和Python使用和普及的数量。虽然这些数字往往告诉我们这两种语言是在计算机科学的整个生态系统发展的很好,这很难横向对比。造成这种情况的主要原因是,你只会在数据科学环境发现R;而另一方面,Python作为一种通用语言被广泛应用于许多领域,如网络开发。这往往偏向有利于Python中的排名结果,而结果是有些负面影响。
    图片 1

    学习曲线

    R 在这一场赢得巨大胜利。

    作为一名教育工作者,Matloff 对这一点尤其感兴趣。

    若使用 Python 做数据科学,必须学习很多不在基础 Python 中的材料,例如 NumPy、Pandas 和 matplotlib。

    相比之下,矩阵类型和基本图形已经内置于基础 R,新手可以在几分钟内完成简单的数据分析。

    即使对于精通系统的人来说,Python 库也很难配置,而大多数 R 软件包都是开箱即用的。

    什么时候,如何使用R?

    R主要用于当数据分析任务需要各个服务器独立计算或分析。探索性的工作非常棒,对于几乎任何类型的数据分析得心应手,因为大量的包和容易使用的测试,经常为你提供必要的工具,快速启动和运行. R甚至可以是大数据解决方案的一部分。

    当开始使用R,一个良好的第一步骤是安装神奇的 IDE RStudio。一旦做到这一点,我们建议您看看下面的流行的包:

    dplyr,plyr和data.table轻松地操纵包,  
    stringr操作字符串,
    zoo处理定期和不定期的时间序列,
    ggvis,lattice,和GGPLOT2可视化数据,
    caret 机器学习
    

    可用的数据科学库

    R 轻微取胜。

    CRAN 拥有超过 14,000 个包。PyPI 的包则多于 183,000 个,不过在数据科学方面看起来似乎比较薄弱。

    Matloff 举了一个例子:他曾经需要代码来快速计算给定数据点的最近相邻,在 CRAN 中能够立即找到不止一个包来执行此操作。而在 PyPi 中粗略搜索后空手而归。

    他还指出在 PyPI 中进行以下搜索没有任何结果:EM 算法;对数线性模型;泊松回归;工具变量;空间数据;整体错误率等等。

    “这并不是说这些东西不存在 Python 库。只是在 PyPI 中不容易找到它们,而在 CRAN 中很容易找到。”

    事实上,R 具有规范的封装结构是一个很大的优势。 安装新软件包时,确切地知道会出现什么。 类似地,R 的泛型函数对于 R 来说也是一大的优势。当使用新的包时,人们知道自己可以使用 print()、plot()、summary() 等,所有这些都构成了包的“通用语言”。

    什么时候,如何使用Python?

    当你的数据分析任务需要整合Web应用程序,或者如果统计代码需要纳入生产数据库时,可以使用Python。作为一个完全成熟的编程语言,它是实现生产使用算法一个伟大的工具。

    而过去Python包进行数据分析不成熟是一个问题,多年来这已经显著改善。请确保安装NumPy /SciPy的(科学计算)和pandas (数据处理),以使Python可用于数据分析。也看看matplotlib制作图形和scikit-learn用于机器学习。

    不像R,Python有没有明确的“最优”IDE。我们建议你使用Spyder,IPython Notebook 和Rodeo ,看看哪一个最适合您的需求。

    机器学习

    Python 略微胜出。

    R vs. Python 辩论主要是统计与 CS 的争论,由于神经网络的大多数研究来自 CS,因此 NN(Neural Network,神经网络) 的可用软件主要是 Python。 RStudio 在开发 Keras 实现方面做了一些出色的工作,但目前为止,R 在这个领域受到限制。

    另一方面,随机森林研究(random forest research)主要由统计界进行,在这个领域 R 更具优越性。R 还具有优异的梯度增强封装。

    这里 Python 略胜一筹,因为对很多人来说,机器学习就意味着神经网络。

    R和Python:数据科学的数量

    如果你看一下最近的民意调查,重点用于数据分析的编程语言,R往往是明显的赢家。如果您特别注重Python和R数据分析领域,会得到一个类似的模式。
    图片 2
    尽管上述数字,有越来越多的人从R转向Python。此外,有越来越多人同时使用二者。这也正符合我们推荐给学生。

    如果你打算开始数据科学的职业生涯,最好熟练两种语言。招聘趋势显示这两个技能的需求不断增加,工资又远高于平均水平。

    统计正确性

    R 赢得大胜。

    Matloff 表示 “R 是由统计学家为统计学家编写的”。他发现“那些主要使用 Python 进行机器学习的人往往对其中的统计问题缺乏了解,甚至不屑一顾”。

    R:优点和缺点

    Pro :一张图片胜过比千言万语

    可视数据通常比单独的原始数据更易于理解。 R和可视化是一个完美的搭配。一些必看的可视化包是GGPLOT2,ggvis,googleVis和rCharts。

    Pro:R生态系统

    R有丰富的生态系统,其中包括前沿的包和活跃的社区。包可CRAN,Bioconductor和Github上得到。您可以在Rdocumentation搜索所有的包。

    Pro:数据科学中用得上R

    R由统计学家为统计专家开发。他们可以通过R代码和包传达的思想和观念,你不一定需要计算机科学的背景。此外,学术界外的人们越来越多的使用R。

    Pro/CON:R很慢

    r的开发是为了让统计人员的生活更轻松,而不是你的电脑的使用寿命。虽然R可能运行缓慢是由于写得不好的代码,有多个包来提高的r性能:PQR,renjin 和FastR,Riposte 等等。

    CON:R有一个陡峭的学习曲线

    R学习曲线很复杂,特别是如果你是来自统计分析的GUI。如果你不熟悉它,即便寻找包可能会非常耗时。

    并行计算

    双方打成平手。

    R 和 Python 的基础版本都不能很好地支持多核计算。 Python 中的线程很适合 I/O,但由于臭名昭著的 Global Interpreter Lock,使用它们进行多核计算是不可能的。 Python 的多处理软件包和 R 的“并行”软件包都不是好的解决方法。 支持集群计算的外部库在两种语言中都 OK。

    目前,Python 具有更好的 GPU 接口。

    Python:优点和缺点

    Pro:IPython Notebook

    IPython Notebook更容易处理Python和数据。您可以轻松地与同事共享notebooks ,无需他们安装任何东西。这大大减少了组织代码,输出和注释文件的开销。这将让您花更多的时间做实际工作。

    Pro:通用语言

    Python是容易和直观的通用语言。这给了它一个相对平坦的学习曲线,它可以增加你写一个程序的速度。总之,你需要更少的时间写代码!

    此外,Python测试框架是一个内置的地要求的测试框架,鼓励良好的测试覆盖率。这样可以保证你的代码是可重复使用的和可靠的。

    Pro:一个多用途的语言

    Python将不同背景的人聚集在一起。作为一个通用的,容易理解的语言,统计学家可以很容易地学会,你可以建立一个单一的工具集成您的工作流程的每一个部分。

    Pro/ CON:可视化

    选择数据分析软件时,可视化是一个重要的标准。虽然Python有一些不错的可视化库,如Seaborn,Bokeh 和Pygal,有太多可供选择的方案。此外,相比于R,可视化通常是比较繁琐,结果并不总是那么顺眼。

    CON:Python是挑战者

    Python是R的挑战者.它不提供数百必不可少的R包的替代。虽然它正在追赶,目前还不清楚这是否会让人放弃了R?

    C/C++ 接口和性能增强

    R 略胜一筹。

    虽然有 SWIG 等工具可以将 Python 连接到 C/C++,但目前没有像 R 的 Rcpp 那样强大的功能。Pybind11 软件包正在开发中。

    此外,R 的新 ALTREP 理念在提高性能和可用性方面具有巨大潜力。

    另一方面,Python 的 Cython 和 PyPy 变体在某些情况下可以预先消除对显式 C/C++ 接口的需求。确实有人会说 Cython 是一个 C/C++ 接口。

    谁是胜利者?

    由你决定!作为一名数据科学家,选择最符合需求的语言是你的工作。有些问题可以帮助你:

    你想解决什么问题?
    学习语言的净成本是什么?
    在你的领域中常用的工具是什么?
    其他可用的工具是什么和这些相关工具日常中是如何使用的?
    

    希望对你是有帮助的!

    面向对象,元编程

    依然是 R 略胜一筹。

    举例来说,尽管函数在两种语言中都可作为对象,但 R 比 Python 更进一步。Matloff 说每当自己使用 Python 工作时,都会因为无法直接将函数输入到终端或编辑它而感到恼火,但在 R 上就可以这样做。

    Python 只有一个 OOP 范例。在 R 中,可以选择几种(S3、S4、R6 等),不过也有些人可能会争论这是否是一件好事。

    R 有神奇的元编程特性(产生代码的代码),但是大多数 CS 人都没有意识到它。

    语言统一性

    R 损失巨大。

    Python 目前正在从 2.7 版过渡到 3.x 版,这会导致一些中断,但不至于太复杂。

    相比之下,R 正迅速转变为两种相互无法理解的语言,即普通的 R 和 Tidyverse。 作为一名经验丰富的 R 程序员,Matloff 表示自己无法阅读 Tidy 代码,因为它调用了许多他不知道的 Tidyverse 函数。也有网友评论说“人们可以在对 R 没什么了解的情况下,在 Tidyverse 中进行编码”。

    关联的数据结构

    Python 获胜。

    经典计算机科学数据结构,例如二叉树,很容易在 Python 中实现。它不是基础 R 的一部分,但可以以各种方式完成,例如数据结构包,它包含了使用广泛的 Boost C++ 库。

    在线帮助

    R 大获胜。

    首先,R 的基本 help() 函数比 Python 的信息量大得多。它很好地补充了 example()。最重要的是,在 R 包中能够编写 vignette(通过函数 vignette() 返回,一般是 PDF 格式的实用介绍性文章)使 R 在这方面成为了一个不折不扣的赢家。

    R/Python 互操作性

    RStudio 开发的 reticulate 包能够在 R 上运行 Python,可以作为 Python 和 R 之间的桥梁,适用于纯计算。 但它并没有解决 Python 中出现的棘手问题,例如虚拟环境等。

    目前,Matloff 不建议编写混合的 Python/R 代码。

    分析了这么多,最后当然还是要根据实际需求来进行选择,毕竟语言之间没有孰优孰劣。

    原文:

    本文由澳门新葡4473网站发布于项目,转载请注明出处:数据科学中R VS Python:获胜者是...

    关键词:

上一篇:Red Hat Enterprise Linux 7.7 正式发布

下一篇:没有了