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

随着科技的发展,拥有高容量、高速度和多样性的大数据已经成为当今时代的主题词。数据科学领域中所采用的机器学习编程语言大相径庭。究竟哪种语言最适合机器学习成为争论不休的话题。近日,密西根州立大学的博士生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-learnmatplotlib等。

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

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


感谢魏星对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群)。

【QCon上海2015】国内外专家云集,解读最新技术趋势和最佳实践。畅销书《番茄工作法图解》作者Staffan Nöteberg、Azul Systems联合创始人兼CTO、著名JVM专家Gil Tene、Uber首席系统架构师、分布式系统专家Matt Ranney以及Twitter Heron核心开发者符茂松与您相约QCon上海!了解详情

机器学习编程语言之争,Python夺魁的更多相关文章

  1. 机器学习编程语言之争,Python 夺魁【转载+整理】

    原文地址 en cn 本文内容 表现平平的 MATLAB 貌似强大的 Julia 本身无错的 R 语言 逐渐没落的 Perl 老而弥坚的 Python 我个人很喜欢 Python~ 随着科技的发展,拥 ...

  2. 四大机器学习编程语言对比:R、Python、MATLAB、Octave

    本文作者是一位机器学习工程师,他比较了四种机器学习编程语言(工具):R.Python.MATLAB 和 OCTAVE.作者列出了这些语言(工具)的优缺点,希望对想开始学习它们的人有用. 图源:Pixa ...

  3. 机器学习实践:《Python机器学习实践指南》中文PDF+英文PDF+代码

    机器学习是近年来渐趋热门的一个领域,同时Python 语言经过一段时间的发展也已逐渐成为主流的编程语言之一.<Python机器学习实践指南>结合了机器学习和Python 语言两个热门的领域 ...

  4. 干货 | 请收下这份2018学习清单:150个最好的机器学习,NLP和Python教程

    机器学习的发展可以追溯到1959年,有着丰富的历史.这个领域也正在以前所未有的速度进化.在之前的一篇文章中,我们讨论过为什么通用人工智能领域即将要爆发.有兴趣入坑ML的小伙伴不要拖延了,时不我待! 在 ...

  5. 机器学习1—简介及Python机器学习环境搭建

    简介 前置声明:本专栏的所有文章皆为本人学习时所做笔记而整理成篇,转载需授权且需注明文章来源,禁止商业用途,仅供学习交流.(欢迎大家提供宝贵的意见,共同进步) 正文: 机器学习,顾名思义,就是研究计算 ...

  6. 机器学习、NLP、Python和Math最好的150余个教程(建议收藏)

    编辑 | MingMing 尽管机器学习的历史可以追溯到1959年,但目前,这个领域正以前所未有的速度发展.最近,我一直在网上寻找关于机器学习和NLP各方面的好资源,为了帮助到和我有相同需求的人,我整 ...

  7. 机器学习之线性回归(纯python实现)][转]

    本文转载自:https://juejin.im/post/5a924df16fb9a0634514d6e1 机器学习之线性回归(纯python实现) 线性回归是机器学习中最基本的一个算法,大部分算法都 ...

  8. day02-操作系统、编程语言分类及python安装

    目录 操作系统 编程语言分类 安装python解释器 操作系统 操作系统有什么用 操作系统能接受外部指令转化成0和1,并把一些对硬件的复杂操作简化成一个个简单的接口,作为中间人连接硬件和软件 计算机三 ...

  9. 超过 150 个最佳机器学习,NLP 和 Python教程

    超过 150 个最佳机器学习,NLP 和 Python教程 微信号 & QQ:862251340微信公众号:coderpai简书地址:http://www.jianshu.com/p/2be3 ...

随机推荐

  1. MT【32】内外圆(Apollonius Circle)的几何证明

    另一方面,如果 M 满足(1)式,那么M必然在以PQ为直径的圆上.事实上当M为P或者Q时,这是显然的.当M异于P,Q时,由$\frac{|MB|}{|MC|}=\frac{|PB|}{|PC|}=\l ...

  2. 关于min_25筛的一些理解

    关于min_25筛的一些理解 如果想看如何筛个普通积性函数啥的,就别往下看了,下面没有的(QwQ). 下文中,所有的\(p\)都代表质数,\(P\)代表质数集合. 注意下文中定义的最小/最大质因子都是 ...

  3. 使用metasploit中Evasion模块

    简介 几天前我说了kali这次更新我最关心的是metasploit升级到了5.0,5.0中有一个新的模块叫Evasion模块,这个模块可以轻松的创建反杀毒软件的木马,今天我们就来试一试 操作 首先打开 ...

  4. 19+ JavaScript 常用的简写技巧

    博主说:对于任何基于 JavaScript 的开发人员来说,这绝对是一篇必读的文章,乃提升开发效率之神器也. 正文 js 1. 三元运算符 当你想用一行代码来写if...else语句的时候,使用三元操 ...

  5. 自学Linux Shell16.4-在命令行上使用函数

    点击返回 自学Linux命令行与Shell脚本之路 16.4-在命令行上使用函数 脚本函数不仅可以用作shell脚本命令,也可以用作命令行界面的命令.一旦在shell中定义了函数,可以从系统的任意目录 ...

  6. luogu4182 [USACO18JAN] Lifeguards P (单调队列优化dp)

    显然可以先把被覆盖掉的区间去掉,然后排个序,左.右端点就都是单调的 设f[i][j]表示前i个区间中删掉j个,而且钦定i不能删的最大覆盖长度 (如果不钦定,就要有一个删掉的状态,那我无法确定前面的到底 ...

  7. 再次膜拜IE的超强兼容性

    今天用firefox和chrome打开几年前写的一个网页,突然发现复选框的“全选”功能失效了. 然后用ie试了一下,竟然正常. 到firefox的错误控制台查看,提示错误: TypeError: id ...

  8. cdn模式下vue的基本用法

    我们知道jq是简化了dom操作,而react和vue则是通过使用虚拟dom的方式,不需要频繁的更改ui界面,而是通过更改数据的方式来更新界面. 我们知道些jq插件时会在IFFE中传入jQuery,jQ ...

  9. word中批量修改图片大小的两个方法

    前言: 对于把ppt的内容拷贝到word中: 对ppt的一页进行复制,然后粘贴到word中 如果要的是ppt运行过程中的内容,在qq运行的情况下,按Ctrl+Alt+A截屏,按勾,然后可以直接粘贴到w ...

  10. mac 上传下载iterm2

    1.安装Homebrew,目的是执行 brew 命令,解决 brew: command not found问题 ruby -e "$(curl -fsSL https://raw.githu ...