写点什么

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:391556
用户头像
刘燕 InfoQ记者

发布了 568 篇内容, 共 178.5 次阅读, 收获喜欢 1081 次。

关注

评论

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

编程能力 —— 解析表达式

wendraw

Java 前端进阶训练营 编程能力

Docker基础修炼3--Docker容器及常用命令

黑马腾云

Docker Linux 命令 容器技术

终于有人把Elasticsearch架构原理讲明白了,感觉之前看的都是渣

爱嘤嘤嘤斯坦

Java elasticsearch 编程 架构

编程能力 —— 寻路问题

wendraw

Java 前端进阶训练营 编程能力

利用 Python 爬取了 13966 条运维招聘信息,我得出了哪些结论?

JackTian

Python Linux 运维 数据分析 招聘

最大的 String 字符长度是多少?

武培轩

Java 源码 后端 JVM

实验室里的AI激情:腾讯优图的升级修炼之路

脑极体

16种设计思想 - Design for failure

Man

Java 微服务 设计原则

一个爱不释手的Apifox,让我扔掉 Postman的想法

给你买橘子

Java 编程 程序员 开发 Postman

HTTP/2 总结

guoguo 👻

漫画通信:一图看懂通信发展史

阿里云Edge Plus

【写作群星榜】6.27~7.10 写作平台优秀作者 & 文章排名

InfoQ写作平台官方

写作平台 排行榜

啃碎并发(八):深入分析wait&notify原理 猿码架构

猿灯塔

肖风:数据要素市场与分布式AI平台

CECBC区块链专委会

微服务架构下分布式事务解决方案

Arthur

SpringBoot入门:01 - 配置数据源

封不羁

Java spring springboot

图解:深度优先搜索与广度优先搜索

淡蓝色

Java 数据结构 算法

领域驱动设计(DDD)实践之路(一)

vivo互联网技术

架构 领域驱动设计 DDD

5分钟上手部署!!!

清风

Java Spring Boot

Java 后端博客系统文章系统——No2

猿灯塔

521我发誓读完本文,再也不会担心Spring配置类问题了

YourBatman

spring springboot @Configuration Spring配置类

区块链+高考,让世界再无冒名顶替

CECBC区块链专委会

【Java虚拟机】垃圾收集器与内存分配

烫烫烫个喵啊

Java Java虚拟机

创业使人成长系列 (2)- 散伙协议

石云升

创业 股权 合伙人 散伙协议

LR.Net平台研发轶事,每一个点都很难,但我们不将就

力软.net/java开发平台

C# .net 跨平台 框架开发

流水账

zack

亚马逊:让创新科技成为重启世界的新动能

爱极客侠

编程能力 —— 异步编程

wendraw

Java 前端进阶训练营 编程能力

DDD实施过程中的点滴思考

Winfield

领域驱动设计 DDD

积极支持EdgeX发展,英特尔为2020 EdgeX中国挑战赛获奖队伍创造广阔合作空间

最新动态

Git 常用操作汇总-cheat sheet

多选参数

git GitHub gitlab gitee

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

2021年全国大学生计算机系统能力大赛操作系统设计赛 技术报告会

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