机器学习编程语言之争,Python夺魁

作者:Linux 摘自:InfoQ

导读:随着科技的发展,拥有高容量、高速度和多样性的大数据已经成为当今时代的主题词。数据科学领域中所采用的机器学习编程语言大相径庭。究竟哪种语言最适合机器学习成为争论不休的话题。近日,密西根州立大学的博士生Sebastian Raschka再次发起了,机器学习编程语言之争 ,分析了自己选择Python的原因。

目前,机器学习牵涉的编程语言十分多样,包括了MATLAB、Julia、R、Perl、Python、Ruby等等。首先,Raschka定义 了语言好坏的原则:一门好的语言应该使得编写、调试和执行代码的总时间最短。然后,他花大篇幅讲述了一个简单的道理——没有一门语言是对所有情况、所有人 都十分适合的。

Roberto Waltman:“在这种唯一正确的方式下,面向对象的Spaghetti code就是Lasagna code。”

针对具体的应用场景以及参与项目的人员,开发团队或个人要对任务需求进行评估,再结合人员对于各个语言的熟悉程度和语言生态环境的情况等等,作出选择。接下来,Raschka开始正式点评各个语言相对与Python在机器学习时的优缺点。

表现平平的MATLAB

作为机器学习、模式识别等方面经常使用的工具,MATLAB被放在了第一个分析。Raschka认为,MATLAB在实现机器学习算法时要比Python或者NumPy更加自然。很多高校也在计算机科学相关的课程中教授MATLAB语言。然而,MATLAB也存在很多的缺点:价格昂贵、非开源、性能表现平平、语法不符合程序员的习惯等。例如,MATLAB中矩阵乘积运算操作为 X.dot(Y) ,而Python为X@W,更加简洁、明了。

各种语言相对于C的测试性能——C的性能为1.0,越小越好

从上图可以看出,MATLAB的性能比Python、Go、Java等语言要差很多。Raschka也提到,上图中Python的性能也表现不好。但是,现在性能强劲的GPU为Python提供了强大的后盾。在2010年的时候,Python中的Theano库在CPU上运行时,其速度是NumPy的1.8倍。而Theano在GPU上运行时,其速度就是NumPy的11倍。因此,在目前更高性能的GPU的帮助下,Python性能已经有了更大的改进。

貌似很强大的Julia

作为一门新型的语言,Julia在设计之处就充分借鉴了C/Ruby/Python等语言的经验,试图重新融合众家之长,为科学计算提供一个有力的工具。Raschka充分认可了该语言。然而,对于其未来Julia是否会流行,Raschka持保留态度。

Bjarne Stroustrup:世界上只有两种语言——大家一直在抱怨的和无人问津的。

Raschka认为一个语言是否有用又很大程度上取决于其是否流行。只有被广大编程人员所熟知的编程语言,相关的库才会更多,遇到问题时也能够方便的找到答案,且易于团队合作和代码分享。语言本身也会随着社区的关注不断得以改善。在流行度上,Julia并没有什么优势。

R语言本身无错

接下来,Raschka又提到了R语言。其实,Raschka之前使用过R语言,而且还专门撰写了一部有关R语言中Heat map的书。而且,他自己也不认为R语言存在任何令人不满意的地方。据Spectrum IEEE统计,在2015年排名前十的编程语言中,R语言是提升最快的。近期,微软对R语言表现出极大的兴趣 。并且很快,微软的Azure便开始支持R语言了。

Alan J. Perlis:当某人说“我想要一门编程语言。它要能够根据我的目标自动生成代码”。让他拿根棒棒糖,一边玩去吧!

Raschka总结R和Python之间的不同在于,R是统计学家开发的(数学)语言,而Python是计算领域科学家开发,可以应用到统计学的编程语言。这就是说,二者都可以很好的应用于数据科学或者机器学习,但Python的语法更容易被程序员所接受。

Perl的没落

Raschka简单分析了Perl语言。作为一门古老的语言,Perl已经不可避免的走向了没落。Raschka表示,Perl曾经是他学习的第一门语言。但是,Perl目前主要用于简单的脚本编写,已经很少应用在机器学习的算法编写方面。

老而弥坚的Python

最后,Raschka夸赞了自己所喜爱的Python语言。尽管Python已经走过了20多年的风雨历程,Raschka认为它仍然可以继续流行下去。而且,Raschka还不遗余力的列出了自己最喜欢的Python工具——NumPy、Theano、scikit-learn 、matplotlib等。

至于Ruby、Java、Scala、Lua等,Raschka没有亲身体验,暂未点评。

对于Raschka的言论,很多人表示赞同,也有不少人反对。有人表示,自己从R切换到Python,主要原因也是Python更方便与团队之外的人进行合作和沟通。也有人表示,作为一个新入门的程序员,利用R进 行数据科学的编程可以利用很多现成的库,十分得心应手。更有与Python打过8年交道的资深程序员表示,Julia十分具有吸引力,愿意花时间去尝试该 语言。亲爱的读者朋友,你眼中最好的机器学习编程语言又是哪个呢?

原文发布于微信公众号 - 大数据文摘(BigDataDigest)

原文发表时间:2015-09-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CDA数据分析师

避免这7个数据错误,让你的数据分析更有效率!

? 编译 Harris 本文转自机房360,转载需授权 数据正在成为现代企业的一个更重要的工具,几乎可以作为一种货币,它可以从衡量营销活动的有效性到评估员...

38580
来自专栏量子位

圣诞节吃饺子时,怎么给女票解释啥是AI?

Root 编译整理自 Wired 量子位 出品 | 公众号 QbitAI 上回的美图头像神器,大家有推荐给女票嘛? 把好看的照骗玩了一圈之后,可能她心里想问,感...

34770
来自专栏Alan的UX笔记

那些设计方法背后的心理学原理

15850
来自专栏企鹅号快讯

研究一下数据分析与挖掘的关系

我就在这里等你关注,不离不弃 ——A·May 数据分析和数据挖掘的区别到底在哪?这个问题还是要想清楚的,最开始,我以为用Python和R这种高级的编程软件做出来...

34050
来自专栏喔家ArchiSelf

《人工智能简史》读后

这个春节有些心神不定,只得靠读书和学习平复心情。《人工智能简史》去年很火,在京东的销售榜中也很考前,未能免俗,自己抽空读了一遍,随记随想。

10650
来自专栏CDA数据分析师

疯狂树懒变身超级阿尔法狗,数据分析师必学四大精髓

? 作为一个数据分析人员,有没有经常被业务人员抱怨报表出的太慢、被工程师嫌弃埋点沟通不精准、甚至被老板怀疑并没有创造什么商业价值……. 好好学习这四步分...

21480
来自专栏大数据挖掘DT机器学习

机器学习编程语言之争,Python夺魁

究竟哪种语言最适合机器学习成为争论不休的话题。近日,密西根州立大学的博士生 Sebastian Raschka 再次发起了机器学习编程语言之争(http://s...

348120
来自专栏Java学习网

中级程序员还应该如何提高自己?

想法和问题 当程序员已经处于中级时,应如何提高自己?有很多关于“学习编程”的资源,能够让人从0到新手(虽然这些资源中大多数的质量是值得商榷的),但是怎么样才能...

29050
来自专栏新智元

【八年苦读】伯克利研究生解决量子计算验证问题

新智元报道 来源:Quantamagazine 作者:Erica Klarreich 编辑:三石、肖琴

17070
来自专栏大数据文摘

第一次民间版知乎用户分析报告

40380

扫码关注云+社区

领取腾讯云代金券