我我的很喜欢 Python~html
随着科技的发展,拥有高容量、高速度和多样性的大数据已经成为当今时代的主题词。数据科学领域中所采用的机器学习编程语言截然不同。究竟哪一种语言最适合机器学习成为争论不休的话题。近日,密西根州立大学的博士生 Sebastian Raschka 再次发起了机器学习编程语言之争,分析了本身选择 Python 的缘由。python
目前,机器学习牵涉的编程语言十分多样,包括了 MATLAB、Julia、R、Perl、Python、Ruby 等等。首先,Raschka 定义了语言好坏的原则:一门好的语言应该使得编写、调试和执行代码的总时间最短。而后,他花大篇幅讲述了一个简单的道理——没有一门语言是对全部状况、全部人都十分适合的。程序员
Roberto Waltman:“在这种惟一正确的方式下,面向对象的 Spaghetti code 就是 Lasagna code。”算法
针对具体的应用场景以及参与项目的人员,开发团队或我的要对任务需求进行评估,再结合人员对于各个语言的熟悉程度和语言生态环境的状况等等,做出选择。接下来,Raschka 开始正式点评各个语言相对与 Python 在机器学习时的优缺点。编程
做为机器学习、模式识别等方面常用的工具,MATLAB 被放在了第一个分析。Raschka 认为,MATLAB 在实现机器学习算法时要比 Python 或者 NumPy 更加天然。不少高校也在计算机科学相关的课程中教授 MATLAB 语言。然而,MATLAB 也存在不少的缺点:价格昂贵、非开源、性能表现平平、语法不符合程序员的习惯等。例如,MATLAB 中矩阵乘积运算操做为 X.dot(Y)
,而 Python为 X@W
,更加简洁、明了。机器学习
各类语言相对于 C 的测试性能——C 的性能为1.0,越小越好,源:http://julialang.org/benchmarks/
从上图能够看出,MATLAB 的性能比 Python、Go、Java 等语言要差不少。Raschka 也提到,上图中 Python 的性能也表现很差。可是,如今性能强劲的 GPU 为 Python 提供了强大的后盾。2010年,Python 中的 Theano 库在CPU上运行时,其速度是 NumPy的1.8倍。而 Theano 在GPU上运行时,其速度就是 NumPy 的11倍。所以,在目前更高性能的 GPU 的帮助下,Python 性能已经有了更大的改进。编程语言
做为一门新型的语言,Julia 在设计之处就充分借鉴了 C/Ruby/Python 等语言的经验,试图从新融合众家之长,为科学计算提供一个有力的工具。Raschka 充分承认了该语言。然而,对于其将来Julia是否会流行,Raschka 持保留态度。ide
Bjarne Stroustrup:世界上只有两种语言——你们一直在抱怨的和无人问津的。工具
Raschka 认为一个语言是否有用又很大程度上取决于其是否流行。只有被广大编程人员所熟知的编程语言,相关的库才会更多,遇到问题时也可以方便的找到答案,且易于团队合做和代码分享。语言自己也会随着社区的关注不断得以改善。在流行度上,Julia 并无什么优点。
接下来,Raschka 又提到了 R 语言。其实,Raschka 以前使用过 R 语言,并且还专门撰写了一部有关R 语言中Heat map的书。并且,他本身也不认为 R 语言存在任何使人不满意的地方。据Spectrum IEEE统计,2015年排名前十的编程语言,R语言是提高最快的。近期,微软对R语言表现出极大的兴趣。而且很快,微软的Azure 便开始支持R语言了。
Alan J. Perlis:当某人说“我想要一门编程语言。它要可以根据个人目标自动生成代码”。让他拿根棒棒糖,一边玩去吧!
Raschka 总结 R 和 Python 之间的不一样在于,R是统计学家开发的(数学)语言,而 Python 是计算领域科学家开发,能够应用到统计学的编程语言。这就是说,两者均可以很好的应用于数据科学或者机器学习,但 Python 的语法更容易被程序员所接受。
Raschka 简单分析了 Perl 语言。做为一门古老的语言,Perl 已经不可避免的走向了没落。Raschka 表示,Perl 曾经是他学习的第一门语言。可是,Perl 目前主要用于简单的脚本编写,已经不多应用在机器学习的算法编写方面。
最后,Raschka 夸赞了本身所喜好的 Python 语言。尽管 Python 已经走过了20多年的风雨历程(由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年),Raschka 认为它仍然能够继续流行下去。并且,Raschka 还竭尽全力的列出了本身最喜欢的 Python 工具——NumPy、Theano、scikit-learn、matplotlib 等。
至于 Ruby、Java、Scala、Lua 等,Raschka 没有亲身体验,暂未点评。
对 Raschka 的言论,不少人表示赞同,也有很多人反对。有人表示,本身从R切换到Python,主要缘由也是Python更方便与团队以外的人进行合做和沟通。也有人表示,做为一个新入门的程序员,利用R进行数据科学的编程能够利用不少现成的库,十分驾轻就熟。更有与Python打过8年交道的资深程序员表示,Julia十分具备吸引力,愿意花时间去尝试该语言。亲爱的读者朋友,你眼中最好的机器学习编程语言又是哪一个呢?