Python,是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,python的使用率呈线性增长。去年7月20日,IEEE发布2017年编程语言排行榜:Python高居首位。
是什么让Python成为当今最流行的机器学习语言!是大数据时代背景的契合,还是其特有的生态系统,或是语言本身?
首先当然是因为大家的life都很short,Python作为解释型语言,虽然跑得比谁都慢,但减少了开发者的工作量。Python开发者的哲学是"用一种方法,最好是只有一种方法来做一件事"。在设计Python语言时,如果面临多种选择,Python开发者一般会拒绝花俏的语法,而选择明确的没有或者很少有歧义的语法。简单易学的特点催生了庞大的用户群体和活跃社区,机器学习框架的制作者也是为了走群众路线让更多人用,Python比较接地气。
Python成为机器学习主力的第二个主要原因,是因为Python提供大量机器学习的代码库和框架。利用python可以享受很多便捷的数学运算第三方库,比如NumPy、SciPy,在可视化方面有MatplotLib和SeaBorn,结构化数据操作可以通过Pandas得到R一般的体验,针对各种垂直领域比如图像、语音、文本在预处理阶段都有很成熟的库可以调用,人们常说:"就你库多"。Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI、Tk和其他与系统有关的操作。这被称作Python的"功能齐全"理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。
当然,这个代码系统还有一些不足的地方,因此产生了很多变通方案。例如Anaconda等发行版有自己的打包机制,可以很好地处理对不属于Python生态系统的可执行文件的依赖。但是,总的来说,Python打包生态系统为机器学习提供了一定程度的便利性,这与Python一贯坚持的简易性和便利性很相符。
最后也就是性能方面。Python性能方面当然是无法满足大规模数据训练的,所以一般企业都是先用Python搭建原型,然后用C++或者JAVA来实现工程化,再用Python封装留出接口。另外,得益于Python对C的接口,很多像gnumpy, theano这样高效、Python接口友好的库可以加速程序的运行,在强大团队的支撑下,这些库的效率可能比一个不熟练的程序员用C写一个月调优的效率还要高。
所以说,让Python在机器学习领域异军突起的不仅是某个单一功能,而是Python整个语言包:简单易学让它更接地气,它的生态系统拥有的第三方代码库可以涵盖广泛的机器学习用例和性能,可以帮助你很好地完成手头的工作。