丰富的线上&线下活动,深入探索云世界
做任务,得社区积分和周边
最真实的开发者用云体验
让每位学生受益于普惠算力
让创作激发创新
资深技术专家手把手带教
遇见技术追梦人
技术交流,直击现场
海量开发者使用工具、手册,免费下载
极速、全面、稳定、安全的开源镜像
开发手册、白皮书、案例集等实战精华
为开发者定制的Chrome浏览器插件
李明江张良均周东平张尚佳著
Python概述人工智能已成为当今世界上最受人瞩目的领域之一。各大公司纷纷在人工智能领域展开角逐,Google、Facebook、Amazon都已经在这个领域里取得了令人瞩目的成果。同时,机器学习作为人工智能的一个分支,已经在不知不觉中深入人们的生活中,如电商平台上的商品推荐和街头监控的图像识别等。由于Python第三方库中集成了诸多算法,所以本书选择Python作为机器学习语言进行介绍。
Python是一门集解释性、编译性、互动性和面向对象为一体的高层次计算机程序语言,也是一门功能强大而完善的通用型语言,已有20多年的发展历史,技术成熟且稳定。相比于C++或Java,Python让开发者能够用更少的代码实现更多的想法。
Python作为一个设计优秀的程序语言,现在已广泛应用于各种领域,依靠其强大的第三方类库,Python在各个领域都能发挥巨大的作用。1.数值计算数值计算是数据挖掘、机器学习的基础。Python提供多种强大的扩展库用于数值计算,常用的数值计算库如表1-1所示。
2.数据可视化数据可视化是展示数据、理解数据的有效手段,常用的Python数据可视化库如表1-2所示。
3.Web开发Web应用开发可以说是目前软件开发中最重要的部分。Python提供各种Web开发框架,帮助使用者快速实现功能开发。常用的Python网络开发类库如表1-3所示。
4.数据库管理数据库是企业用于存放数据的主要工具,数据库管理包括了数据定义、数据操作、数据库运行管理、数据组织、数据库库保护、数据库维护等。Python提供了所有主流关系数据库管理接口,常用的PythonMySQL连接库及其简介如表1-4所示。
5.自动化运维运维的主要内容包括保障业务长期稳定运行、保障数据安全可靠、自动化完成部署任务。Python能够满足绝大部分自动化运维的需求,目前在Linux运维中已用Python实现的应用如表1-5所示。
6.GUI编程GUI(GraphicalUserInterface,图形用户界面)是指采用图形方式显示的计算机操作用户界面。Python提供多个图形开发界面的库用于GUI编程,常用PythonGUI库如表1-6所示。
Python是机器学习领域最优秀的编程语言之一,与同样支持机器学习且自带机器学习应用的MATLAB不同的是,由于Python是开源项目,所以几乎所有必要的组件都是完全免费的。当前机器学习领域的主流编程语言为Python、R、MATLAB、Java和C/C++,如表1-7所示。
相比起Java与C/C++,Python代码非常容易阅读和学习,使得大多数从事机器学习和人工智能的研究(工作)人员能以最方便的方式来实现自己的想法。Python具有严格且一致的语法风格,这使得每个Python使用者都可以更好地理解其他人的Python代码,而其他语言的语法有可能会导致混淆和不一致的编程范例。Python作为一门理想的集成语言,将各种技术绑定在一起,除了为用户提供更方便的功能之外,还是一个理想的粘合平台,在开发人员与外部库的低层次集成人员之间搭建连接,以便用C/C++实现更高效的算法。对于研究人员者而言,使用Python编程可以快速迁移代码并进行改动,而无须花费过多的精力在修改代码与代码规范上。开发者在Python中封装了很多优秀的依赖库,其中NumPy和SciPy库提供了目前解决机器学习问题所需的标准配置。Python目前集成了大量的机器学习框架,其中常用机器学习库如表1-8所示。
深度学习作为机器学习的分支,绽放了耀眼的光芒。由于Python的易用性与可扩展性,众多深度学习框架提供了Python接口,其中较为流行的深度学习库如表1-9所示。
Python3.x引入了一些与Python2不兼容的关键字和特性,为避免带入过多的累赘,Python3.0在设计的时候没有考虑向下兼容,许多针对早期Python版本设计的程序都无法在Python3.0上正常运行。为照顾现有程序,Python2.6作为一个过渡版本,在使用Python2.x的语法和库的同时兼顾向Python3.0的迁移,允许使用部分Python3.0的语法与函数。基于早期Python版本且能正常运行于Python2.6并无警告的程序,可以通过一个2to3的转换工具无缝迁移到Python3.0。Python2.7被确认为最后一个Python2.x版本,除支持Python2.x语法外,还支持部分Python3.1语法。Python核心团队计划在2020年停止支持Python2,目前大部分第三方库已经完成向Python3.x的迁移工作,推荐在新的程序中使用Python3.x版本。
Anaconda是一个Python的集成开发环境,可以便捷地获取库,且提供对库的管理功能,同时对环境可以统一管理的发行版本。Anaconda包含Conda、Python等在内的超过180个科学库及其依赖项。其主要特点为:开源,安装过程简单,高性能使用Python和R语言,免费的社区支持等。其包含的科学库包括:Conda、NumPy、SciPy、IPythonNotebook等。Anaconda支持目前主流的多种系统平台,包含Windows、MacOS和Linux(x86/Power8)。
2)单击“IAgree”按钮同意安装协议并进入下一步,如图1-3所示。
3)若系统只有一个用户选择默认的第1个选项即可,若有多个用户且都需要用到Anaconda,则选择第2个选项。之后单击“Next”按钮,注意此处需要管理员权限才可进入下一步,如图1-4所示。
4)进入安装路径设置,此处选择默认的安装路径,也可依据需要自行修改安装路径。单击图1-5所示的“Browse...”按钮,在弹出的如图1-6所示的对话框中选择安装路径。
5)进入安装前的权限设置,第1个选项为将Anaconda加入环境变量,加入后可通过命令行运行Anaconda;第2个选项为默认使用Python3.6,按用户需求进行设置,如图1-7所示。单击“Install”按钮开始安装。
6)等待安装过程完成,会弹出是否安装MicrosoftVSCode的对话框,依据用户需求选择是否安装,若不安装单击“Skip”按钮跳过即可,如图1-8所示。7)单击“Finish”按钮完成安装过程,默认勾选的选项可以单击取消,如图1-9所示。
Python是一门解释性语言,在运行时需要解释才能执行,此时需要解释器执行解释这项工作。集成开发环境(IntegratedDevelopmentEnvironment,简称IDE,也称IntegrationDesignEnvironment或IntegrationDebuggingEnvironment)是一种辅助程序开发人员开发软件的应用软件,在开发工具内部就可以辅助编写源代码文本,并编译打包成为可用的程序,有些甚至可以设计图形接口。IDE包括编程语言编辑器、自动构建工具,通常还包括调试器。有些IDE包含编译器/解释器,虽然目前有一些IDE支持多种编程语言,但是一般的IDE主要还是针对特定的编程语言而量身打造。
Python的第1个解释器CPython在1991年诞生,使用C语言实现,并且能够调用C库。发展至今,除源生解释器CPython外,还发展出了形形色色的解释器,其中部分为基于CPython的改进,也有完全基于其他语言编译的版本,目前主流的Python解释器如表1-10所示。
选择合适的IDE能有效帮助开发者提高编程效率。IDE大致上可分为下述两类。免费的IDE,此类IDE通常能支持多平台且提供一些基本功能。为更高级的面向企业和专业开发人员的商业IDE,其功能比免费IDE更为完善和强大,同时也提供免费的社区版,社区版除部分收费功能以外与商业版一致。常用的PythonIDE如下。1.IDLEIDLE是开发Python程序的基本IDE,具备基本IDE的功能,是非商业Python开发的不错选择,是Python创造者GuidovanRossum使用pythonandTkinter创建的一个集成开发环境。使用IDLE必须安装pythonandTkinter,其特性包含:自动缩进、彩色编码、命令历史(Alt+p,Alt+n)和单词自动(Alt+/)完成。IDLE的界面如图1-10所示。
2.PyCharmPyCharm是专业的Python集成开发环境,有社区版和商业版两个版本。PyCharm拥有最多的企业用户,如Twitter、Groupon、Spotify、eBay和Telefonica等。PyCharm的大部分功能在社区版本中都是可用的,包括智能代码补全、直观的项目导航、错误检查和修复、遵循PEP8规范的代码质量检查、智能重构以及图形化的调试器和运行器。还能与IPythonNotebook进行集成,并支持Anaconda及其他的科学计算库,比如Matplotlib和NumPy。PyCharm专业版本支持更多高级的功能,如远程开发功能、数据库支持及对Web开发框架的支持等。PyCharm支持很多的第三方Web开发框架,如Django、Pyramid、web2py、GoogleAppEngine和Flask,这些也使得PyCharm成为一个完整的快速应用集成开发环境。PyCharm的主界面如图1-11所示。
3.Eclipse+PyDevEclipse是一个开放源代码的、基于Java的可扩展开发平台。其本身是一个框架和一组服务,用于通过插件组件构建开发环境。在Eclipse中,Python应用程序的开发和调试主要通过PyDev插件来实现。PyDev插件的出现方便了众多Python开发人员,该插件提供一些很好的功能,如:语法错误提示、源代码编辑助手、QuickOutline、GlobalsBrowser、HierarchyView、运行和调试等。使用PyDev插件Eclipse的界面如图1-12所示。
4.RodeoRodeo是一个专门用于Python实现数据科学的IDE,被认为是IPythonNotebook的一个轻量级替换。Rodeo采用yhat开发,基于IPython内核,支持自动代码补全、结果数据分析。它运行于浏览器中,带有键盘快捷键,其交互性让用户感觉更像是一个本地应用。Rodeo使用IPython内核来处理UI和Python环境之间的通信,编辑器使用的是Ace。其主要功能包含:执行脚本、运行分析、自动完成、检查数据、可见的绘图、文档和帮助。Rodeo的主界面如图1-13所示。
5.JupyterNotebookJupyterNotebook以网页的形式打开,可在网页页面中直接编写代码和运行代码,代码的运行结果将会直接在代码块下显示。JupyterNotebook以文档的形式体现所有交互计算、编写说明文档、数学公式、图片,以及其他富媒体形式的输入和输出,这部分文档将保存为后缀名为.ipynb的JSON格式文件,方便与他人共享和进行版本控制。JupyterNotebook的主要特点如下:1)可直接通过浏览器运行代码,同时在代码块下方展示运行结果。2)编程时具有语法高亮、缩进、Tab补全的功能。3)对代码编写说明文档或语句时,支持Markdown语法。4)以富媒体格式展示计算结果,富媒体格式包括:HTML、LaTeX、PNG、SVG等。5)支持使用LaTeX编写数学性说明。JupyterNotebook的代码界面如图1-14所示。
6.SpyderSpyder是一个开源的Python集成开发环境,非常适合用来进行科学计算方面的Python开发,是一个轻量级的软件,遵循MIT协议,可免费使用。Spyder的基本功能包括多语言编辑器、交互式控制台、文件查看、variableexplorer、文件查找、文件管理等。支持多种系统平台,可运行于Windows、Mac或者Linux系统之上。也可以作为PyQT的扩展库,嵌入PyQT的应用中。Spyder的主界面如图1-15所示。
1)双击打开安装包,单击“Next”按钮进入下一步,如图1-16所示。2)进入安装路径设置,此处选择默认的安装路径,也可依据需要自行修改安装路径。单击如图1-17所示的“Browse...”按钮,在弹出的如图1-18所示的对话框中选择安装路径。
3)依据系统版本勾选对应的版本,此处选择64位的版本,如图1-19所示。
4)单击如图1-20所示的“Install”按钮开始安装。5)单击“Finish”按钮完成安装过程,默认勾选的选项可以单击取消,如图1-21所示。
2.基本设置安装成功后,还需要进行一系列设置才能开始使用PyCharm,具体步骤如下。1)双击打开PyCharm,按照喜好选择UI,之后单击“Next”进入下一步,如图1-22所示。2)进入插件选择页面,按照用户需求选择插件安装,也可直接跳过该步骤,单击“StartusingPyCharm”按钮正式进入PyChram页面,如图1-23所示。
3)首次使用需要创建一个新工程,单击“CreatNewProject”创建,以后使用时可单击“Open”按钮打开以往创建的工程,如图1-24所示。
4)选择创建的工程的位置,单击如图1-25所示的文件夹图标,将弹出如图1-26的字的位置选择框,选择想要创建的工程位置。注意创建的工程文件夹必须为空。单击“ProjectInterpreter:NewVirtualenvenvironment”将会看到PyCharm已自动识别已安装的Python程序,之后单击“Create”按钮将创建工程。
5)PyCharm将自动初始化,等待初始化完毕后,右键单击创建的工程,在“New”标签下,单击“PythonFile”即可创建一个.py文件,如图1-27所示。
6)输入文件名称,即可创建.py文件进行编辑,如图1-28所示。7)创建成功后,将会在工程文件夹下自动新建一个.py文件,之后就可以开始编程了,如图1-29所示。
(2)查找/替换(Search/Replace)PyCharm中查找/替换的快捷键及其用途如表1-12所示。
(3)运行(Running)PyCharm中运行的快捷键及其用途如表1-13所示。
(4)调试(Debugging)PyCharm中调试的快捷键及其用途如表1-14所示。
(5)导航(Navigation)PyCharm中导航的快捷键及其用途如表1-15所示。
(6)用法查询(UsageSearch)PyCharm中用法查询的快捷键及其用途如表1-16所示。
(7)重构(Refactoring)PyCharm中重构的快捷键及其用途如表1-17所示。
(8)控制VCS/LocalHistoryPyCharm中控制VCS的快捷键及其用途如表1-18所示。
(9)模板(LiveTemplates)PyCharm中模板的快捷键及其用途如表1-19所示。
(10)通用(General)PyCharm中的通用快捷键及其用途如表1-20所示。
Anaconda3中集成了JupyterNotebook,因此在Anaconda3安装完毕后,用户便可以开始使用JupyterNotebook。1.进入JupyterNotebook可通过两种方式进入JupyterNotebook,一种是直接单击菜单目录中Anaconda3下的JupyterNotebook,如图1-30所示。
运行成功后,终端内会显示一系列JupyterNotebook的服务器信息,同时浏览器将会自动启动JupyterNotebook,如图1-31所示。
单击右上角的“New”按钮,在弹出的标签栏中选择“Python3”,即可创建一个Python文件,如图1-33所示。
创建成功后,进入笔记本页面,如图1-34所示。
在该页面可对.py文件进行操作。单击图1-34左上方的“Untitled”按钮可修改文件名。常用工具栏按钮及其功能如表1-21所示。
在单元格中输入命令,之后单击运行按钮在单元格下输出结果,同时自动新建一个单元格,如图1-35所示。
3.MarkdownMarkdown工具可以将TXT转化成html格式。这一类工具的作用是将按一定格式写成的可读性强的文本文件转化为结构化的标准xhtml或html文件。JupyterNotebook中集成的Markdown需要通过安装扩展来实现添加,在命令行中执行如下命令进行添加。condainstall-cconda-forgejupyter_contrib_nbextensions之后启动JupyterNotebook,导航栏将增加一个“Nbextensions”的类目,单击“Nbextensions”,勾选“PythonMarkdown”启用,如图1-36所示。
新建一个.py文件,在单元格状态的下拉框中选择“Markdown”即切换至Markdown,如图1-37所示。
之后在单元格内输入的内容将以html的形式输出,如图1-38所示。
4.快捷键JupyterNotebook拥有两种键盘输入模式。第1种是编辑模式,此时允许往单元中键入代码或文本。该模式下的单元框线是绿色的,并且活动单元框内有光标闪烁,如图1-39所示。第2种是命令模式,此时允许通过键盘输入运行程序的命令。该模式下的单元框线是蓝色的,且单元框内没有光标闪烁,如图1-40所示。
(1)编辑模式编辑模式下可使用的快捷键及其用途如表1-22所示。
(2)命令模式命令模式下可以使用的快捷键及其用途如表1-23所示。
1.选择题(1)下面关于Python版本描述错误的是()。A.第一个Python解释器诞生于1991年B.Python核心团队将在2020年停止支持Python2C.Python3.x向下兼容Python2D.Python的最新版本为Python3.7
(2)下面不属于Python特性的是()。A.解释性B.静态C.动态D.面向对象
(3)下面关于Python机器学习库描述错误的是()。A.sklearn为Python机器学习标准库B.Tensorflow由Facebook团队开发C.PyTorch的计算方式都是动态的D.Theano是一个更为学术化的神经网络模块
(4)下面关于Python解释器描述错误的是()。A.CPython使用C语言开发B.JPython运行在Java平台上C.IPython使用html开发D.PyPy与CPython的执行结果有可能不同
(5)下面关于PythonIDE描述错误的是()。A.PyCharm无法免费使用B.IDLE是Python基本IDEC.JupyterNotebook可在网页页面中直接编写代码和运行代码D.Spyder是一个开源的轻量级Python开发环境
2.操作题(1)按照1.2.3节中的步骤安装Anaconda3,并使用JupyterNotebook创建一个应声虫程序。
(2)按照1.3.3节中的步骤安装社区版PyCharm,并使用PyCharm编写一个简单的求和程序。