0717-7821348
欢乐彩票平台

欢乐彩票平台

您现在的位置: 首页 > 欢乐彩票平台
数据科学哪家强?Python和R的对决
2019-08-09 22:24:43

Norm Matloff 是加州大学戴维斯分校的核算机科学教授,他针对数据科学界终年争辩的关键,作了一篇关于 R 和 Python 的比照剖析。

在剖析开端之前,Matloff 先抛出自己或许带有的潜在成见:他写过 4 本与 R 相关的书,在 useR! 和其数据科学哪家强?Python和R的对决他 R 的会议上做过讲演,而且现在担任 R 期刊的主编。但一起他也用 Python 敲过多年代码。Matloff 期望自己的剖析能够被认为是公正且有协助的。

接着,这位专业的数据科学哪家强?Python和R的对决核算机科学家和核算学家从以下几方面对 R 和 Python 做出了比照:

高雅

Python 显着胜出。

当然这是片面的。可是在不同编程言语的比照之下,Python 大大减少了括号的运用:

ifx > y:

z = 5

w = 8

vs.

if(x > y)

{

z= 5

w = 8

}

Python 很时髦!

学习曲线

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

作为一名教育作业者,Matloff 对这一点特别感兴趣。

若运用 Python 做数据科学,有必要学习许多不在根底 Python 中的资料,例如 NumPy、Pandas 和 matplotlib。

相比之下,矩阵类型和根本图形现已内置于根底 R,新手能够在几分钟内完结简略的数据剖析。

即便关于通晓体系的人来说,Python 库也很难装备,而大多数 R 软件包都是开箱即用的。

可用的数据科学库

R 细微制胜。

CRAN 具有超越 14,000 个包。PyPI 的包则多于 183,000 个,不过在数据科学方面看起来好像比较单薄。

Matloff 举了一个比如:他从前需求代码来快速核算给定数据点的最近相邻,在 CRAN 中能够当即找到不止一个包来履行此操作。而在 PyPi 中大略查找后空手而归。

他还指出在 PyPI 中进行以下查找没有任何成果:EM 算法;对数线性模型;泊松回归;东西变量;空间数据;全体错误率等等。

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

事实上,R 具有标准的封装结构是一个很大的优势。装置新软件包时,切当地知道会呈现什么。类似地,R 的泛型函数关于 R 来说也是一大的优势。当运用新的包时,人们知道自己能够运用 print、plot、summary 等,所有这些都构成了包的“通用言语”。

机器学习

Python 稍微胜出。

R vs. Pyt数据科学哪家强?Python和R的对决hon 争辩首要是核算与 CS 的争辩,由于神经网络的大多数研讨来自 CS,因而 NN(Neural Network,神经网络) 的可用软件首要是 Python。RStudio 在开发 Keras 完结方面做了一些超卓的作业,但现在为止,R 在这个范畴受到限制。

另一方面,随机森林研讨(random forest research)首要由核算界进行,在这个范畴 R 更具优越性。R 还具有优异的梯度增强封装。

这儿 Python 技高一筹,由于对许多人来说,机器学习就意味着神经网络。

核算正确性

R 赢得大胜。

Matloff 表明 “R 是由核算学家为核算学家编写的”。他发现“那些首要运用 Python 进行机器学习的人往往对其间的核算问题缺少了解,乃至嗤之以鼻”。

并行核算

两边打成平手。

R 和 Python 的根底版别都不能很好地支撑多核核算。Python 中的线程很合适 I/O,但由于臭名远扬的 Global Interpreter Lock,运用它们进行多核核算是不或许的。Python 的多处理软件包和 R 的“并行”软件包都不是好的处理方法。支撑集群核算的外部库在两种言语中都 OK。

现在,Python 具有更好的 GPU 接口。

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 开发的 reti数据科学哪家强?Python和R的对决culate 包能够在 R 上运转 Python,能够作为 Python 和 R 之间的桥梁,适用于纯核算。但它并没有处理 Python 中呈现的扎手问题,例如虚拟环境等。

现在,Matloff 不主张编写混合的 Python/R 代码。

剖析了这么多,最终当然仍是要根据实践需求来进行挑选,究竟言语之间没有孰优孰劣。

检查「阅览原文」以了解更多。

宫外孕怎么办

全国最大“同性结交”社区了解一下