从 R 切换到 Python 值得吗?

人工智能 Python 比较 r
2021-11-05 19:36:26

我刚刚完成了为期 1 年的数据科学硕士课程,在那里我们学习了 R。我发现 Python 更受欢迎,并且在 AI 领域拥有更大的社区。

在适用于数据科学和人工智能领域的功能(除了受欢迎程度和更大的社区)方面,Python 可能比 R 有哪些优势?数据科学和人工智能中的哪些职位比 R 更重 Python(尤其是比较行业、学术和政府工作职位)?简而言之,Python 在所有工作情况下都值得吗,或者我可以在某些职位上只使用 R 吗?

4个回答

我想重新定义你的问题。

不要考虑切换,考虑添加。

在数据科学中,您可以使用 python 或 r 走得很远,但两者都走得最远。

reticulate多亏了这个包,Python 和 r 集成得很好。我经常在 r 中整理数据,因为这对我来说更容易,在 python 中训练模型以从卓越的速度中受益,并ggplot在一个笔记本中以漂亮的方式可视化 r 中的结果!

如果您已经知道 r,那么放弃它是没有意义的,请在对您来说合理且容易的地方使用它。但是为多种用途添加 python 是 100% 的好主意。

一旦您对两者都感到满意,您将拥有一个最适合您的工作流程,由您最喜欢的语言主导。

当然,这类问题也会导致主要基于意见的答案。尽管如此,还是可以列举每种语言在机器学习、统计和数据分析任务方面的优势和劣势,我将尝试在下面列出。

R

优势

  • R 是为统计学家和数据分析师设计和开发的,因此它为统计学家提供了开箱即用(即它们是语言本身的一部分)的特性和工具,这些在 Python 中是不可用的,除非你安装相关包。例如数据框,Python 不提供,除非你安装了著名的 Python 的pandas包。还有其他的例子,比如矩阵、向量等。在 Python 中,也有类似的数据结构,但它们更通用,因此不是专门针对统计学家的。

  • 有很多统计库。

弱点

Python

优势

  • 很多人和公司,包括谷歌和 Facebook,都在 Python 上投入了大量资金。例如,TensorFlow 和 PyTorch(两个广泛使用的机器学习框架)的主要编程语言是 Python。因此,Python 不太可能在至少 5 到 10 年内不会继续广泛用于机器学习。

  • Python 社区可能比 R 社区大得多。实际上,例如,如果您查看Tiobe 的 index,Python 排在第 3 位,而 R 排在第 20 位。

  • Python 在统计或机器学习社区之外也被广泛使用。例如,它用于 Web 开发(参见 Python 框架 Django 或 Flask)。

  • 有很多机器学习库(例如 TensorFlow 和 PyTorch)。

弱点

  • 它不提供 R 提供的开箱即用的统计和数据分析功能,除非您安装了适当的包。这可能是一个弱点或一个优势,这取决于你的哲学观点。

这些语言还有其他可能的优点和缺点。例如,两种语言都是动态的。但是,这个特性既可以是优势也可以是劣势(并且它与机器学习或统计并不严格相关),因此我没有在上面列出。出于显而易见的原因(例如,并非所有人都有相同的编程经验),我避免提及固执己见的语言特性,例如代码可读性和学习曲线。

结论

如果你正在学习机器学习或统计学,Python 绝对值得学习。但是,这并不意味着您将不再使用 R。对于某些任务,R 可能仍然更方便。

我没有这个选择,因为我被迫从 R 迁移到 Python:

这取决于您的环境:当您嵌入工程师部门时,工作技术组或类似于 Python 的东西更可行。

当你被科学家,尤其是统计学家包围时,和 R 呆在一起。

PS:R 也提供了 keras 和 tensorflow,尽管它是在 python 的底层实现的。只有非常高级的东西会让你需要 Python。虽然我越来越习惯 Python,但R 中的合成器更容易尽管每个包都有自己的包,但它在某种程度上是一致的,而 Python 不是……而且 ggplot 是如此强大。Python 有一个克隆(plotnine),但它缺少几个(重要的)特性。原则上你可以做的几乎和 R 一样多,但在 R 中尤其是可视化和数据整理要容易得多。因此,最著名的 Python 库 pandas 是R的克隆。

PSS:高级统计绝对针对 R。Python 为数据科学家提供了许多日常工具和方法,但它永远不会达到 R 提供的超过13,000个包。例如,我必须进行逆回归,而 python 不提供此功能。在 R 中,您可以在多个置信度测试之间进行选择,以及它是线性的还是非线性的。混合模型也是如此:它是在 python 中实现的,但它是如此基础,我无法意识到这对某人来说如何就足够了。

我会说是的。Python 在大多数任务上都比 R 好,但是 R 有它的优势,你仍然希望在许多情况下使用它。

此外,学习第二语言将提高您的编程技能。

我自己对 R 与 Python 的优势的看法是,我更喜欢 R 用于涉及表格或图表的小型、单一用途的程序,或者类似的探索性工作。对于其他一切,我更喜欢 Python。

  • R非常适合表格混搭。如果一个特定程序要做的大部分事情是将一些表格平滑成不同的形状,那么 R 就是要选择的东西。Python 有这方面的工具,但 R 是为它设计的并且做得更好。
  • 每当您需要制作图表时,都值得切换到 R,因为ggplot2是 API 可用性的杰作,而matplotlib是令人毛骨悚然的恐怖。
  • Python 专为通用编程而设计。它有一套设计良好的标准数据结构、标准库和控制流语句。
  • R 不太适合通用编程。它不能很好地处理树结构或图形结构的数据。它有一些非常方便的规则(比如能够查看和修改父作用域),但使用时会导致程序难以扩展、修改或编写。
  • R 也有一些直截了当的坏东西。这些大多只是历史遗留物,如三个不同的对象系统。

详细说明最后一点:做得好的计算机编程是乐高积木,您可以在其中制作自己的积木(功能和模块)。

程序通常会被修改并重新利用其原始设计。在构建它们时,考虑哪些部分可以重复使用,并以一种通用的方式构建这些部分,让它们插入到其他积木中是很有用的。

R 鼓励你把所有的砖块融化在一起。