写点什么

Python vs R:谁是构建机器学习项目的最佳选择

2019 年 9 月 12 日

Python vs R:谁是构建机器学习项目的最佳选择

你是否正在考虑构建一个机器学习项目,并在为你的项目选择正确的编程语言之间徘徊?那么,本文将帮助您厘清与 Python 和 R 的特性相关的疑问。接下来,开始介绍基础知识。



R 和 Python 都是数据科学家最常用的工具,它们有相似的特性和功能。这两种语言都是开源的,而且从此以后都是免费的,但是 Python 被构造成一种广泛使用的编程语言,而 R 则是为统计分析而创建的。


在本文中,我们将讨论两种语言的优缺点,以便你可以决定哪种选择最适合自己。


Python

Python 编程语言是在上世纪 80 年代末开发的,它在支持谷歌的内部基础设施方面起着至关重要的作用。Python 由热情的技术团队开发,现在已被广泛应用于 YouTube、Instagram、Quora 和 Dropbox 等应用程序中。Python 在 IT 业务中得到了广泛的应用,并且它允许在开发团队中进行简单的协作。这样,如果你需要一种适应性强、多原因的编程语言,且拥有庞大的工程师网络及可扩展的 AI 包,那么 Python 是首选。


Python 的优点

通用语言。 如果你的项目需要的不仅仅是统计数据,那么 Python 被认为是更好的选择。例如,设计一个功能性网站


平滑的学习曲线。Python 易于学习和访问,这使您能够更快地找到熟练的开发人员。


大量重要的库。Python 对不计其数的库进行了分解,以便对信息进行咀嚼、收集和控制。以 Scikit-realize 为例,它包含了用于信息挖掘和调查的工具,支持使用 Python 实现令人难以置信的人工智能便利性。另一个名为 panda 的捆绑包为工程师提供了更好的结构和数据检测设备,帮助他们缩短改进时间。如果你的开发团队需要 R 的一个主要功能,那么 RPy2 是你应该追求的。


更好的集成。一般来说,在任何工程环境中,Python 的集成都比 R 好。因此,无论设计人员是否尝试使用 C,C ++或 Java 等偏低级的语言,它通常都可以通过 Python 包装器更好地连接不同的组件。此外,基于 python 的堆栈非常容易创建,但它很难将数据研究人员手头的剩余任务合并到一起。


提高生产力。像其他编程语言一样,Python 的语法具有极强的可解释性,但与 R 相比,它是独一无二的。这样,它保证了开发团队的高盈利性。


Python 的缺点

包含非常少的统计模型包。


由于全局解释器锁(GIL)的存在,Python 中的线程处理变得很棘手,而且问题很多。因此,多线程 cpu 绑定应用程序的运行速度比单线程应用程序慢。人工智能对于执行多处理比使用多线程编程更有价值。


R

R 是由统计学家开发的,而且它基本上是为统计学家而开发的,任何开发人员都可以通过观察它的语法来做预测。由于该语言包含了机器学习中涉及的数学计算,而机器学习是从统计学中派生出来的,因此 R 成为希望更好地理解底层细节和构建创新的正确选择。


如果你的项目主要基于统计数据,那么 R 可以被认为是缩小项目范围的最佳选择,因为这需要一次性地深入数据集。例如 - 如果你想通过将段落解构为单词或短语来分析文本语料库以识别其模式,那么 R 是最佳选择。


R 的优点:

适合分析。如果数据分析或可视化是你项目的核心,那么 R 可以被认为是最好的选择,因为它允许快速原型化,并与数据集一起设计机器学习模型。


大量有用的库和工具。与 Python 类似,R 由多个包组成,这些包有助于提高机器学习项目的性能。例如,Caret 通过其特殊的一组函数增强了 R 的机器学习能力,这些函数有助于高效地创建预测模型。R 开发人员可以从高级数据分析包中获得优势,这些包覆盖建模前和建模后阶段,这些阶段针对特定的任务,如模型验证或数据可视化。


适合于探索性工作。如果在项目的开始阶段,您需要在统计模型中进行任何探索性工作,那么 R 可以使它们更容易编写,因为开发人员只需要添加几行代码。


R 的缺点

陡峭的学习曲线。很难否认 R 是一门具有挑战性的语言,因此你极少能找到专家来组建你的项目团队。


不一致。由于 R 的算法来自第三方,所以可能会出现不一致。每次你的开发团队使用新算法时,所有连接的资源都需要学习不同的方法来建模数据并进行预测。与此类似,每个新包都需要学习,且没有关于 R 的详细文档,因为它会对开发速度产生负面影响。


R vs Python:选择哪一个?

谈到机器学习项目,R 和 Python 都有各自的优势。不过,Python 似乎在数据处理和重复性任务方面表现得更好。因此,如果你计划构建基于机器学习的数字产品,它是正确的选择。此外,如果你需要在项目的早期阶段开发一个用于特别分析的工具,那么就选择 R。


当然,最终的选择取决于你想使用哪种编程语言。在那之前——继续学习!


作者简介


Vikash Kumar 就职于软件开发公司 TatvaSoft,他喜欢分享机器学习、人工智能等方面的新想法。


原文链接


https://towardsdatascience.com/python-vs-r-whats-best-for-machine-learning-93432084b480


2019 年 9 月 12 日 16:391594
用户头像
刘燕 InfoQ记者

发布了 598 篇内容, 共 190.1 次阅读, 收获喜欢 1159 次。

关注

评论

发布
暂无评论
发现更多内容

深入汇编指令理解Java关键字volatile

AI乔治

Java 架构 volatile Java内存模型

掉坑了!GROUP_CONCAT函数引发的线上问题

AI乔治

Java MySQL 架构 GROUPING运算符

关于读书的随想

小天同学

读书 4月日更

千人万面奇妙自见:爱奇艺短视频推荐技术中多兴趣召回技术的演变

爱奇艺技术产品团队

推荐 短视频 模型 召回

马丁策略倍投软件开发,量化倍投系统

13823153121

怎样才能拿到高薪?JDK掌握的集合类库知识梳理,网友大喊666

java专业爱好者

Java

世界读书日,爱奇艺ers的技术产品书单

爱奇艺技术产品团队

读书

阿里P9大佬,首次分享SpringBoot整合MybatisPlus笔记,我跪了

java专业爱好者

Java

一次用户故事拆分分享

Bruce Talk

敏捷 Agile 用户故事 User Story

Flink的状态一致性

大数据技术指南

flink 4月日更

如何从零开始学Python:(7)如何解决发布和上传代码过程中遇到的问题?

广之巅

Python 四月日更

LiteOS内核源码分析:动态内存之Bestfit分配算法

华为云开发者社区

LiteOS Huawei LiteOS 动态内存 Bestfit 分配算法

当区块链遇到工业互联网,浪潮云洲链正在那里

浪潮云

云计算

Git 常用命令速查

箭上有毒

4月日更

Flink的Checkpoint持久化存储方案

五分钟学大数据

flink 4月日更

Java最前沿技术——ZGC

AI乔治

Java 架构 jdk ZGC JVM

基于NIO高性能、可扩展网络应用库:xSocket

风翱

4月日更 xSocket

欢迎 ProForma 的制造商 ThinkTilt 加入 Atlassian 的大家庭!

Atlassian

敏捷 esm ITSM Atlssian JiraServiceManagement

网络协议学习笔记 Day2

穿过生命散发芬芳

网络协议 4月日更

大学生调研:在选择工作时,最看重什么?

石云升

28天写作 4月日更 1 周年盛典

读书有用吗

孙苏勇

读书

自动源代码质量度量(ISO/IEC 5055)

Tom(⊙o⊙)

软件质量 静态分析

算法速成!字节强推2021最新Leetcode刷题笔记Github全面开源,卷就完了!

Java王路飞

Java 程序员 架构 面试 算法

ShutdownHook原理

捉虫大师

Java

【得物技术】得物分布式UI自动化实践

得物技术

测试 UI 质量 自动化测试 得物技术

苹果(Apple Watch)手表使用必知必会19条

Flychen

苹果手表 IWatch Apple Watch

浅析 Linux 中的 I/O 管理

赖猫

Linux

总是记不住java的IO流用法?用N个问题教你掌握java IO流

华为云开发者社区

Java 字符串 IO流 字节输入流 字符流

噱头or契机:多端协同游戏的草蛇灰线

脑极体

差点跳起来了!阿里首推22w字Java面试复盘宝典成功助我入职美团

程序员小毕

Java spring 架构 面试 设计模式

40 图|硬核解析用 Mac M1 玩转 SpringCloud

悟空聊架构

Mac SpringCloud 开源项目 m1 passjava

「中国技术开放日·长沙站」现场直播

「中国技术开放日·长沙站」现场直播

Python vs R:谁是构建机器学习项目的最佳选择-InfoQ