用于机器学习的 Python 与 R

数据挖掘 机器学习 r Python
2021-10-08 19:33:26

我刚刚开始为学术目的开发机器学习应用程序。我目前正在使用R并在其中训练自己。但是,在很多地方,我看到人们使用Python

人们在学术界和工业界使用什么,有什么建议?

4个回答

在选择RPython时需要考虑的一些真正重要的区别:

  • 机器学习有两个阶段。模型构建和预测阶段。通常,模型构建是作为批处理过程执行的,并且预测是实时完成的模型构建过程是一个计算密集型过程,而预测发生在瞬间。因此,Python 或 R 中算法的性能并不会真正影响用户的周转时间。蟒蛇 1,R 1。
  • 生产: Python 和 R 之间的真正区别在于生产就绪。Python 本身就是一种成熟的编程语言,许多组织在他们的生产系统中使用它。R 是许多学术界青睐的统计编程软件,由于数据科学的兴起和库的可用性以及开源,业界已经开始使用 R。这些组织中的许多组织都使用 Java、C++、C#、 Python 等。因此,理想情况下,他们希望使用相同语言的预测系统来减少延迟和维护问题。蟒蛇 2,R 1。
  • 库:这两种语言都有庞大而可靠的库。R 有 5000 多个库,可满足许多领域的需求,而 Python 有一些令人难以置信的包,如Pandas、NumPy、SciPy、Scikit Learn、Matplotlib蟒蛇 3,R 2。
  • 发展:这两种语言都是解释性语言。许多人说 python 很容易学习,它几乎就像阅读英语(把它放在一个轻松的音符上)但是 R 需要更多的初始学习努力。此外,它们都有很好的 IDE(用于 Python 的 Spyder 等和用于 R 的 RStudio)。Python 4,R 2。
  • 速度: R 软件最初在大型计算方面存在问题(例如,像 nxn 矩阵乘法)。但是,Revolution Analytics 引入 R 解决了这个问题。他们用 C 语言重写了计算密集型操作,速度非常快。Python 作为一种高级语言相对较慢。蟒蛇 4,R 3。
  • 可视化:在数据科学中,我们经常倾向于绘制数据以向用户展示模式。因此,可视化成为选择软件的重要标准,而 R 在这方面完全击败了 Python。感谢 Hadley Wickham 提供了令人难以置信的 ggplot2 包。R胜出。蟒蛇 4,R 4。
  • 处理大数据: R 的限制之一是将数据存储在系统内存 (RAM) 中。因此,当您处理大数据时,RAM 容量成为一个限制因素。Python 做得很好,但我想说,由于 R 和 Python 都有 HDFS 连接器,因此利用 Hadoop 基础架构将显着提高性能。所以,Python 5,R 5。

因此,两种语言都同样出色。因此,根据您的领域和工作地点,您必须明智地选择正确的语言。技术界通常更喜欢使用单一语言。业务用户(营销分析、零售分析)通常使用 R 等统计编程语言,因为他们经常进行快速原型设计和构建可视化(在 R 中比 Python 更快)。

没有什么像“python 更好”或“R 比 x 好得多”。

我所知道的唯一事实是,在这个行业中,有很多人坚持使用 Python,因为那是他们在大学里学到的。python 社区非常活跃,有一些很棒的 ML 和数据挖掘等框架。

但老实说,如果你有一个优秀的 c 程序员,他可以像人们在 python 或 r 中做的一样,如果你有一个优秀的 java 程序员,他也可以(接近)用 java 做所有事情。

因此,请坚持使用您熟悉的语言。

一些额外的想法。

编程语言“本身”只是一种工具。所有语言都旨在使某些类型的构造比其他构造更容易构建。与其他语言相比,编程语言的知识和掌握比该语言的功能更重要和有效。

据我所知,这个问题有两个方面。第一个维度是快速探索、构建概念或模型证明的能力,最终拥有足够的工具来研究正在发生的事情(如统计测试、图形、测量工具等)。研究人员和数据科学家通常更喜欢这种活动(我总是想知道这意味着什么,但我用这个术语来定义它的松散定义)。他们倾向于依赖知名且经过验证的工具,这些工具可用于证明或论证。

第二个维度是扩展、改变、改进甚至创建工具、算法或模型的能力。为了实现这一点,您需要一种适当的编程语言。几乎所有这些都是相同的。如果你为一家公司工作,那么你在很大程度上依赖于公司的基础设施、内部文化,你的选择会大大减少。此外,当您想要实现用于生产用途的算法时,您必须信任该实现。并且用您不掌握的另一种语言实现对您没有太大帮助。

对于第一种类型的活动,我倾向于支持 R 生态系统。你有一个很棒的社区,大量的工具,证明这些工具可以按预期工作。此外,您可以考虑 Python、Octave(仅举几例),它们是可靠的候选者。

对于第二个任务,你必须先考虑你真正想要什么。如果您想要强大的生产就绪工具,那么 C/C++、Java、C# 是很好的选择。我认为 Python 是这个类别中的第二个公民,与 Scala 和朋友一起。我不想开始一场火焰战争,这只是我的意见。但是作为一名开发人员超过 17 年之后,我倾向于更喜欢严格的合同和我的知识,而不是自由地做你可能想到的任何事情(就像很多动态语言都会发生的那样)。

就个人而言,我想尽可能多地学习。我决定我必须选择困难的方式,这意味着我自己从头开始实现所有东西。我使用 R 作为模型和灵感。它在图书馆里有很多宝藏,也有很多经验提炼出来。然而,R 作为一种编程语言对我来说是一场噩梦。所以我决定使用 Java,并且不使用额外的库。那只是因为我的经验,没有别的。

如果你有时间,你能做的最好的事情就是花一些时间处理所有这些事情。通过这种方式,您将为自己赢得适合您的最佳答案。Dijkstra 曾经说过,工具会影响你的思维方式,因此最好先了解你的工具,然后再让它们模拟你的思维方式。您可以在他的著名论文《谦虚的程序员》中了解更多相关信息

我会补充其他人到目前为止所说的话。没有一种语言比另一种语言更好的单一答案。

话虽如此,R 有一个更好的数据探索和学习社区。它具有广泛的可视化功能。另一方面,自从引入 pandas 以来,Python 在数据处理方面已经变得更好。与 R 相比(R 是一种低级语言),Python 的学习和开发时间要少得多。

我认为这最终归结为你所处的生态系统和个人喜好。有关更多详细信息,您可以在此处查看此比较。