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

机器学习编程语言之争,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为[email protected],更加简洁、明了。

各种语言相对于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中文站投稿或者参与内容翻译工作,请邮件至[email protected]om。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群)。

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

时间: 2024-11-03 01:31:00

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

600多种编程语言为何选学Python?这几个理由足够了!

注: 看完这几个理由,建议新手入门买两本书 <零基础学Python>和<Python入门到实践> 自2016年Python取代Java成为高校中最受欢迎的语言,从那时起它受欢迎的程度就没有减退过. 随着新时代的到来,Python正在不断发展壮大.如果你阅读编程和技术新闻或博客文章,那么你可能已经发现了Python的兴起,已经是大势所趋! 但是,最大的问题是为什么应该学习Python? 对于初学者来说很简单,从Python开始是最好的选择.因为它易于学习,功能强大,足以构建Web应用

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

机器学习是近年来渐趋热门的一个领域,同时Python 语言经过一段时间的发展也已逐渐成为主流的编程语言之一.<Python机器学习实践指南>结合了机器学习和Python 语言两个热门的领域,通过利用两种核心的机器学习算法来将Python 语言在数据分析方面的优势发挥到极致. 共有10 章.第1 章讲解了Python 机器学习的生态系统,剩余9 章介绍了众多与机器学习相关的算法,包括各类分类算法.数据可视化技术.推荐引擎等,主要包括机器学习在公寓.机票.IPO 市场.新闻源.内容推广.股票市场.

函数式编程语言LISP,python,haskell,clojure

说说我自己的背景吧,我是个半吊子的程序员,做任何事情喜欢比较了解然后再尝试,我接触过很多语言,大多数都把它当成工具来使用 我现在的工作大部分主要在于数据挖掘与机器学习方面,也学习web开发,我第一个拿来工作的语言是python,我是从那里得知函数式编程的概念的 说起lisp据说python就是模仿的lisp,而得知这个语言是从黑客与画家这本书中得知的,据说是一个特别值得尝试的语言,由于作者说如果年龄超过25岁,最好不要尝试学习它,我明年就本命年了,看来应该试着尝试一下了 在之前面临招工作的时候曾

【机器学习实验】用Python进行机器学习实验

概要 本文是用Python编程语言来进行机器学习小实验的第一篇.主要内容如下: 读入数据并清洗数据 探索理解输入数据的特点 分析如何为学习算法呈现数据 选择正确的模型和学习算法 评估程序表现的准确性 读入数据 Reading the data 当读入数据时,你将面临处理无效或丢失数据的问题,好的处理方式相比于精确的科学来说,更像是一种艺术.因为这部分处理适当可以适用于更多的机器学习算法并因此提高成功的概率. 用NumPy有效地咀嚼数据,用SciPy智能地吸收数据 Python是一个高度优化的解释

一门编程语言的发展史-----python!(人生苦短,我用python)

本文作者:Vamei "好吧,我承认Python不错,但它为什么叫Python呢?" "呃,似乎是一个电视剧的名字." "那你说的Guido是美国人么?" "他从Google换到Dropbox工作,但他的名字像是荷兰人的." "你确定你很熟悉Python吗?" 起源: Python的作者,Guido van Rossum,确实是荷兰人.1982年,Guido从阿姆斯特丹大学获得了数学和计算机硕士学位.然而,

IEEE发布2017年编程语言排行榜:Python高居首位

https://news.cnblogs.com/n/574248 编者按:本文由微信公众号“机器之心”(ID:almosthuman2014)编译,机器之心专注生产 AI 领域专业性内容.本文作者:Stephen Cass,选自 IEEE Spectrum.授权 36 氪发布. 今天,IEEE Spectrum 发布了第四届顶级编程语言交互排行榜.因为有各种不同语言的排行,所以 IEEE Spectrum 依据不同的变量对流行度进行了排行.据 IEEE Spectrum 介绍,他们的排行依据数

建模分析之机器学习算法(附python&amp;R代码)

0序 随着移动互联和大数据的拓展越发觉得算法以及模型在设计和开发中的重要性.不管是现在接触比较多的安全产品还是大互联网公司经常提到的人工智能产品(甚至人类2045的的智能拐点时代).都基于算法及建模来处理.     常见的词汇:机器学习.数据建模.关联分析.算法优化等等,而这些种种又都是基于规律的深度开发(也难怪道德经的首篇就提出道可道非常道,名可名非常名的说法),不管是线性还是非线性,总之存在关联关系,而我们最好理解的就是线性关系,简单的用个函数就能解决.比如我们生活中应用的比较的归纳总结,其

【机器学习实验】学习Python来分类现实世界的数据

引入 一个机器能够依据照片来辨别鲜花的品种吗?在机器学习角度,这事实上是一个分类问题.即机器依据不同品种鲜花的数据进行学习.使其能够对未标记的測试图片数据进行分类. 这一小节.我们还是从scikit-learn出发,理解主要的分类原则,多动手实践. Iris数据集 Iris flower数据集是1936年由Sir Ronald Fisher引入的经典多维数据集.能够作为判别分析(discriminant analysis)的样本.该数据集包括Iris花的三个品种(Iris setosa, Iri

1.编程语言发展史与Python简介

1.编程语言发展史:1.1机器语言计算机内部只能识别二进制代码,用二进制代码0和1描述的指令称为机器指令,全部机器指令的集合构成的计算机语言称为机器语言.该语言开发效率特别低,运行效率高.1.2汇编语言将机器语言的二进制指令变成英文单词,稍微提高了可读性和开发效率,程序员写完程序后通过汇编器(类似于高级语言的编译器)将汇编代码转化为机器语言然后交给CPU运行.1.3高级语言编译型:相较于汇编语言来说代码可读性.开发效率有所改善,程序员写完程序后通过编译器(比如C语言的GCC)将代码转化为机器语言