Python机器学习
上QQ阅读APP看书,第一时间看更新

1.1 Python简介

Python是一种开源的、解释型、面向对象的编程语言。Python易于学习,更适合初学者,广泛用于计算机程序设计语言教学、系统管理任务的处理,以及科学计算等方面,可以高效开发各种应用程序。本节主要介绍Python语言的发展历史、语言特点和应用领域等。

1.1.1 Python的产生与发展

1.Python的产生

Python语言起源于1989年年末。1989年圣诞节期间,荷兰国家数学与计算机科学研究所(CWI)的研究员吉多·范罗苏姆(Guido van Rossum)为完成其研究小组的Amoeba分布式操作系统执行管理任务,需要一种高级脚本编程语言。为创建新语言,Guido从高级教学语言ABC(All Basic Code)中汲取了大量语法,并从系统编程语言Modula-3(一种为小型团体所设计的相当优美且强大的语言)借鉴了错误处理机制,从而开发了命名为Python的新脚本解释语言。之所以将新的语言命名为Python,据说是因为Guido是BBC电视剧《蒙提·派森的飞行马戏团(Monty Python's Flying Circus)》的粉丝。

ABC语言是由Guido参与设计的一种教学语言,他认为ABC语言是专门为非专业程序员设计的非常优美且强大的语言。但是ABC语言并没有成功,Guido认为其失败的原因是该语言不是开源性语言。于是,Guido决心在Python中避免这一缺陷,并获得了非常好的效果。Python继承了ABC语言的特点,并且照顾了UNIX Shell和C语言用户的习惯,成为众多UNIX和Linux开发者所青睐的开发语言。

2.Python的发展

Python语言产生后,于1991年年初以开源方式公开发行第一个版本Python 1.0,因为功能强大和开源,Python发展很快,用户越来越多,形成了一个庞大的语言社区。

2000年10月Python 2.0发布,增加了许多新的语言特性。同时,整个开发过程更加透明,社区对开发进度的影响逐渐扩大。

2008年12月Python 3.0发布,该版本在语法上有较大变化,除了基本输入/输出方式有所不同,很多内置函数和标准库对象的用法也有很大区别,适用于Python 2.x和Python 3.x的扩展库之间更是差别巨大,导致用早期Python版本设计的程序无法在Python 3.x上运行。考虑向Python 3.x的迁移,作为过渡版本发行了Python 2.6和Python 2.7,采用Python 2.x语法,同时将Python 3.0一些新特性移植到Python 2.6和Python 2.7版本中。Python 3.x的设计理念更加合理、高效和人性化,代码开发和运行效率更高。

目前,Python官方网站同时维护着Python 2.x和Python 3.x两个不同系列的版本,常用版本分别是Python 2.7、Python 3.6和Python 3.7,Python版本更新速度非常快。另外,Python官方于2019年9月宣布,2020年1月1日起停止对Python 2.x的维护和更新。所以,使用Python 2.x系列的用户应尽快转换成Python 3.x并且选择较高的版本。

随着Python的普及与发展,近年来Python 3.x下的第三方函数模块日渐增多。本书选择Windows操作系统下的Python 3.x版本作为程序实现环境(下载安装时的最高版本是Python 3.7.4)。

1.1.2 Python的特点

Python语法具有清晰、简洁的特点,可以使初学者摆脱语法细节的约束,而专注于解决问题的方法、分析程序本身的逻辑和算法。Python的特点如下。

● 简单易学。Python语法结构简单,遵循优雅、明确、简单的设计理念,易学、易读和易维护。

● 解释型语言。Python解释器将源代码转换成Python的字节码,由Python虚拟机逐条执行字节码指令,即可完成程序的执行,用户不必再担心如何编译、链接是否正确等,使得Python更加简单、方便。

● 面向对象。Python既支持面向过程的编程又支持面向对象的编程,支持灵活的程序设计方式。

● 免费和开源。Python是FLOSS(自由/开放源码软件)之一。简单地说,用户可以自由地发布这个软件的副本,阅读和更改其源代码,并可将它的一部分用于新的自由软件中。

● 跨平台和可移植性。由于Python的开源特性,经过改动,Python已经被移植到Windows、Linux、macOS和Android等不同的平台上工作。

● 丰富的标准库。除了官方提供的非常完善的标准库,Python还具有丰富的第三方库,这些库有助于处理各种工作,包括输入/输出、文件系统、数据库、网络编程、图形处理和文本处理等,供开发者直接调用,省去了编写大量代码的过程。

● 可扩展性和可嵌入性。如果用户需要让自己的一段关键代码运行得更快,或者是编写一些不愿开放的算法,则可以将此部分程序用C/C++编写,然后在Python程序中调用它们。同样,用户可以把Python嵌入到C/C++程序中,为程序提供脚本功能。

Python语言简单、开源、库丰富、可移植和可扩展,应用领域广泛。

1.1.3 Python的应用领域

Python语言除了自身具备的优点,还具有大量优秀的第三方函数模块,对学科交叉应用非常有帮助。目前,基于Python语言的相关技术正在飞速发展,用户数量急剧扩大,在软件开发领域有着广泛的应用。

1)操作系统管理与维护。Python提供应用程序编程接口(Application Programming Interface,API),可以方便地对操作系统进行管理和维护。使用Python编写的系统管理脚本在可读性、代码重用度、扩展性等方面都优于普通的Shell脚本。

2)科学计算与数据可视化。Python提供了很多用于科学计算、数据可视化和机器学习的库,如NumPy、SciPy、SymPy、Matplotlib、Traits、OpenCV和scikit-learn等,可用于科学计算、数据分析、机器学习、二维图表、三维数据可视化、图像处理及界面设计等领域。

Python提供的与机器学习关系较为密切的主要库如下。

● NumPy库:提供Python科学计算基础库,主要用于矩阵处理与运算。

● Matplotlib库:Python中常用的绘图模块,可以快速地将计算结果以不同类型的图形展示出来。

● scikit-learn库:开源的基于Python语言的机器学习工具包,提供了大量用于数据挖掘和分析的模块,包含了从数据预处理到训练模型、交叉验证,以及算法与可视化等一系列接口,可以极大地节省编写代码的时间,减少代码量。

3)图形用户界面(GUI)开发。Python支持GUI开发,可以使用Tkinter、wxPython和PyQt库开发各种跨平台的桌面软件。

4)文本处理。Python提供的re模块能支持正则表达式,还提供SGML和XML分析模块,可以利用Python开发XML程序。

5)网络编程及Web开发。Python提供的Socket模块对Socket接口进行了二次封装,支持Socket接口的访问,以支持网络编程。Python还提供了urllib、cookielib、httplib和scrap等大量模块用于对网页内容进行读取和处理,并结合多线程编程及其他有关模块可以快速实现Web应用开发。Python还支持Web网站开发,搭建Web框架,目前比较流行的开发框架有Web2Py和Django等。

6)数据库编程。Python提供了支持所有主流关系数据库管理系统的接口DB-API(数据库应用程序编程接口)规范的模块,用于与SQLite、MySQL、SQL Server和Oracle等数据库通信。另外,Python自带一个Gadfly模块,提供了完整的SQL环境。

7)游戏开发。Python在网络游戏开发中得到了广泛应用。Python提供的Pygame模块可以在Python程序中创建功能丰富的游戏和多媒体程序。