Py学习  »  Python

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

StuQ • 6 年前 • 475 次点击  

作者|张天雷
来源|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 十分具有吸引力,愿意花时间去尝试该语言。亲爱的读者朋友,你眼中最好的机器学习编程语言又是哪个呢?

3个月精通Python机器学习

课程介绍: Python 机器学习这门课程专为对机器学习感兴趣、想从事相关职业的零基础学员打造,带领学员全面系统地掌握 Python 机器学习的相关知识,并能够胜任 Python 机器学习中级工程师及以上的工作。

课程共分5大模块:

  • 模块一:Python 机器学习常见算法与实现

  • 模块二:scikit-learn 模块与案例实现

  • 模块三:MILK 模块与案例实现

  • 模块四:Python 机器学习综合案例实战

  • 模块五:面试辅导

课程目标:

  • 掌握 Python 机器学习相关的基础知识

  • 掌握 Python 机器学习常见算法与实现

  • 掌握 scikit-learn 模块与案例实现

  • 掌握 MILK 模块与案例实现

  • 学习 Python 机器学习经典项目案例实战

  • 能够独立完成常见的机器学习项目

  • 顺利通过 Python 机器学习相关面试

限时团购价,只要1999元,了解更多课程内容,请添加海报中小助手咨询:


部分用图片来源:网络


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/MqYBqh3EMr
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/3516
 
475 次点击