1、人工智能的缘起授课人:目录01什么是人工智能02人工智能的发展历程03人工智能的特征及典型应用PART 01什么是人工智能 当你看到一个活泼可爱动物的时候,不知道它的名字,你可以像图(a)所示,拍一张它的图片,利用动物识别系统来解决你的疑惑。当你每天拿起智能手机的时候,通过如图(b)所示的刷脸它会自动帮你解锁。当你进入京东网站进行购物时,如图(c)所示,你在第一时间就获得了你喜欢的商品信息。又如,当你看到扫地机器人、自动驾驶汽车能减轻你的工作强度时,你一定会感叹科技的发展如此之快。然而,以上这些新技术的应用,仅仅只是一个开始。在耳熟能详新的信息技术飞速发展的今天,我们有时候很难预测十年、二十年

2、后我们的生活到底会发生哪些惊天动地的变化。什么是人工智能那么,什么是人工智能呢? 现代的人工智能的起点公认为是1956年的达特茅斯会议。在这次会议上,由麦卡斯、明斯基等人发起成立了一个独立的人工智能研究学科,为后续人工智能的发展奠定了学科基础。在达特茅斯会议的建议书中,对人工智能研究的预期目标描述是:制造一台机器,它可以模拟学习或者智能的所有方面,让机器达到这样的行为,即与人类做同样的行为。”什么是人工智能 有关AI的常见定义有两个:一个是图灵奖获得者、“人工智能之父”的美国教授马文明斯基提出的,即“人工智能是一门科学,是使机器做那些人需要通过智能来做的事情”;另一个定义是斯坦福大学的尼尔森教

3、授给出的:“人工智能是一门关于研究知识的表示、知识的获取和知识的运用的学科 ”。图1.3 马文明斯基教授(左)和尼尔森教授(右)什么是人工智能PART 02人工智能的发展历程第一阶段人工智能的萌芽期第二阶段人工智能的启动期第三阶段人工智能的消沉期第四阶段人工智能的突破期第五阶段人工智能的高速发展期人工智能发展的五个阶段人工智能的发展历程发展历程图人工智能的发展历程PART 03人工智能的特征及典型应用人工智能有哪些特征? 像人一样思考。即它是有头脑的机器,具有与人类思维相关的活动,诸如决策、问题求解和学习活动等。 像人一样行动。即它能替代一些原来由人来执行需要智能的技艺,甚至能完成比人更擅长的

4、事情。人工智能的特征及典型应用 可见,人工智能所涉及的知识涵盖数学、神经科学、心理学、语言学、计算机工程和控制理论等多个方面。由此可见,人工智能包含了各学科的方方面面,但对于偏向人工智能实践应用层面的人而言,能掌握相关的概念和基本原理无疑是一件非常令人惬意的事情,也非常有助于你的成长和发展。人工智能的特征及典型应用 随着人工智能进入新时代,近年来,AI已广泛应用到各行业各领域,为企业、行业的创新应用和人们生活的提档升级注入了新的动力,一些典型的应用有。人工智能的特征及典型应用 那么请大家想一想,在我们日常生活中有着哪些人工智能的应用?无人驾驶人脸识别医学机器人智能家居携手同行,走向辉煌!机器学

5、习与深度学习授课人:目录01机器学习的要义02深度学习的崛起03神经网络的魅力PART 01机器学习的要义 机器学习专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习最基本的做法,就是使用算法来解析数据、从中学习,然后对真实世界中的事件做出决策和预测。与传统的为解决特定任务、硬编码的软件程序不同,机器学习是用大量的数据来“训练”,通过各种算法从数据中学习如何完成任务。 机器学习的要义举个例子 我们邮箱里有自动垃圾分类程序,它的工作就是收到一封邮件后,通过查看内容,然后判断它是否为垃圾邮件。那么,它是如何来判断的呢?首先,我们

6、需要一堆邮件,提取判别邮件正常与否的特征数据(如关键词,词频等),并对其中的普通邮件和垃圾邮件进行标注,有了这些数据后,我们可以通过某种算法来构建一个模型,然后用数据进行训练,得到一条回归曲线,收到一封信邮件后,判断它在曲线的位置,如果远离正常邮件,则认为是垃圾邮件。垃圾分类过程机器学习的要义 机器学习直接来源于早期的人工智能领域。传统算法包括决策树学习、推导逻辑规划、聚类、分类、回归、强化学习和贝叶斯网络等等。 机器学习最成功的应用领域是计算机视觉,人们需要手工编写分类器、边缘检测滤波器,形状检测程序,分类器。使用这些手工编写的分类器,人们可以开发算法来感知图像。但是它太僵化,太容易受环境条

7、件的干扰。机器学习的要义PART 02深度学习的崛起AI与真人的又一场较量 2017年4月6日,人工智能与真人对打的扑克赛事 “冷扑大师”VS“中国龙之队”德州扑克牌表演赛在海南生态 软件园开赛。“冷扑大师”相对于“阿尔法围棋”的不同在于,前者不需要提前背会大量棋(牌)谱,也不局限于在公开的完美信息场景中进行运算,而是从零开始,基于扑克游戏规则针对游戏中对手劣势进行自我学习,并通过博弈论来衡量和选取最优策略。经过为期5天的角逐,人工智能“冷扑大师”最终以792327总记分牌的战绩完胜并赢得200万奖金。深度学习的崛起 “冷扑大师”人工智能系统又一次颠覆了AI在人们心中的印象和地位,那么究竟是什

8、么神奇的力量支撑了人工智能,使其具有如此高的智商和巨大威力?深度学习的崛起 在此,就不得不提到深度学习,它是人工智能发展的高级阶段产物,是人工智能的幕后英雄,是AI背后的算法支持。 深度学习的横空出世,将机器学习的预测能力提高到一个空前的高度。人工神经网络(Artificial Neural Networks,ANN)是早期机器学习中的一个重要的算法,历经数十年风风雨雨。神经网络的原理是受我们大脑的生理结构互相交叉相连的神经元启发。但与大脑中一个神经元可以连接一定距离内的任意神经元不同,人工神经网络具有离散的层、连接和数据传播的方向。例如,我们可以把一幅图像切分成图像块,输入到神经网络的第一层

9、。在第一层的每一个神经元都把数据传递到第二层。第二层的神经元也是完成类似的工作,把数据传递到第三层,以此类推,直到最后一层,然后生成结果。 每一个神经元都为它的输入分配权重,这个权重的正确与否与其执行的任务直接相关。最终的输出由这些权重加总来决定。我们仍以停止(S-t-o-p)标志牌为例。将一个停止标志牌图像的所有元素都打碎,然后用神经元进行“检查”:八边形的外形、救火车般的红颜色、鲜明突出的字母、交通标志的典型尺寸和静止不动运动特性等等。神经网络的任务就是给出结论,它到底是不是一个停止标志牌。神经网络会根据所有权重,给出一个经过深思熟虑的猜测“概率向量”。深度学习的崛起 标牌识别例子里,系统

10、可能会给出这样的结果:86%可能是一个停止标志牌;7%的可能是一个限速标志牌;5%的可能是一个风筝挂在树上等等。然后网络结构告知神经网络,它的结论是否正确。即使是这个例子,也算是比较超前了。浅层的神经网络也还是为人工智能圈所淡忘。其实在人工智能出现的早期,神经网络就已经存在了,但神经网络对于“智能”的贡献微乎其微。主要问题是,即使是最基本的神经网络,也需要大量的运算。神经网络算法的运算需求难以得到满足。 不过,还是有一些虔诚的研究团队,以多伦多大学的Geoffrey Hinton为代表,坚持研究,实现了以超算为目标的并行算法的运行与概念证明。但也直到GPU得到广泛应用,这些努力才见到成效。我们

11、回过头来看这个停止标志识别的例子。神经网络是调制、训练出来的,时不时还是很容易出错的。它最需要的,就是训练。需要成百上千甚至几百万张图像来训练,直到神经元的输入的权值都被调制得十分精确,无论是否有雾,晴天还是雨天,每次都能得到正确的结果。只有这个时候,我们才可以说神经网络成功地自学习到一个停止标志的样子;或者在Facebook的应用里,神经网络自学习了你妈妈的脸;又或者是2012年吴恩达(Andrew Ng)教授在Google实现了神经网络学习到猫的样子等等。深度学习的崛起 吴教授的突破在于,把这些神经网络从基础上显著地增大了。层数非常多,神经元也非常多,然后给系统输入海量的数据,来训练网络。

12、在吴教授这里,数据是一千万YouTube视频中的图像。吴教授为深度学习加入了“深度”(deep)。这里的“深度”就是说神经网络中众多的层。现在,经过深度学习训练的图像识别,在一些场景中甚至可以比人做得更好:从下图所示的识别猫,到辨别血液中癌症的早期成分,到识别核磁共振成像中的肿瘤,这些是深度学习的杰出表现。Google的AlphaGo先是学会了如何下围棋,然后与它自己下棋训练。它训练自己神经网络的方法,就是不断地与自己下棋,反复地下,永不停歇,这种学习能力和精力专注是人类无法比拟的。利用深度学习从视频中找出猫的图片深度学习的崛起 由以上的叙述中我们不难总结出人工智能、机器学习和深度学习的关系,

13、三者之间的关系如下图所示。 由此可见,机器学习属于人工智能的一个分支,是一种实现人工智能的方法,也是人工智能的基础,机器学习主要是设计和分析一些让计算机可以自动“学习”的算法。深度学习是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,如图象、声音、文本等,是一种基于神经网络的深度结构学习的技术。深度学习的崛起PART 03神经网络的魅力 无论是机器学习,还是深度学习,都离不开神经网络(Neural Network),起源于人们对生物体神经的认知,生物神经网络是由神经元、突触等结构组成,大量的神经元通过无数的突触连接在一起构成一个更大规模

14、的神经网络,能处理人的思维和记忆,神经元的结构如下图所示。神经元结构神经网络的魅力 人们通过模仿生物神经网络的工作原理构建了人工神经网络,其中的神经元模型早期称为感知机,后来将所有的感知机连接起来,形成网络。人工神经元的结构如下图所示。人工神经元结构上图中,x1,x2, xn是输入向量,w1,w2, wn是对应的权重向量,f是激活函数,加权和为:S=x1w1+x2w2+xnwn然后经过线性或者非线性函数进行激活:Y=f(S+b)上式中b为偏置变量,Y是输出向量。神经网络的魅力 我们把多个神经元组成一层神经元,并增加神经元的层数,那么就构成一个神经网络,如下图所示。多层神经网络 理论已经证明,通

15、过增加神经网络的层数和改变激活函数,并利用相应学习算法不断迭代改变损失误差,就可以用多层神经网络来拟合任意函数,解决线性和非线性问题,也就是通过增加网络的深度和宽度来提高神经网络模型的健壮性和预测的准确性。 因此,多层神经网络结构的出现,以及相关算法的完善,为人工智能的普及和应用做出了突破性贡献。神经网络的魅力携手同行,走向辉煌!小试牛刀: 识别图片上的动物授课人:目录01提出问题02解决方案03预备知识04任务1准备一张动物图片05任务2智能获取动物信息PART 01提出问题 动物世界千奇百怪,对于普通游客而言,当你在动物园看到一种陌生的动物时,你可能急切想了解这个动物的名称、分布范围、生活

16、习性等信息,当然你可以通过动物园的铭牌来获取这些信息,如果铭牌模糊或信息不全,那有没有一种快捷的方式帮助我们解决这个尴尬的问题呢?提出问题 幸运的是,5G技术和人工智能的普及,为解决问题提供了无限可能。大家可以试想一些,如果在野外与一个小动物不期而遇,给它拍个照,利用人工智能快速识别图像的能力来辨别眼前的动物,就可以从根本上改变游客或动物学家认识或研究动物的方式,这着实是一件令人愉悦的事情。 下面,我们就利用智能云技术,来开始我们识别动物之旅,体验一下人工智能的魅力。提出问题PART 02解决方案 为了识别图片上的动物,一种简便的方法是利用一些智能云服务,如百度智能云、华为人工智能云等智能服务

17、提供的动物识别功能,对你上传的图片进行识别,帮助你进一步了解图片上的动物。解决方案图解决方案PART 03预备知识 百度智能云是百度提供的公有云平台,于2015年正式开放运营。百度云秉承“用科技力量推动社会创新”的愿景,不断将百度在云计算、大数据、人工智能的技术能力向社会输出。“世界很复杂,百度更懂你”,2016年,百度正式对外发布了“云计算+大数据+人工智能”三位一体的云计算战略。百度云推出了40余款高性能云计算产品,天算、天像、天工三大智能平台,分别提供智能大数据、智能多媒体、智能物联网服务。为社会各个行业提供最安全、高性能、智能的计算和数据处理服务,让智能的云计算成为社会发展的新引擎。百

18、度智能云提供的服务预备知识人工智能服务提供的功能 利用百度智能云平台上的人工智能服务,以及百度提供的开源深度学习框架PaddlePaddle,还有人工智能开发语言Python,我们就可以开启人工智能的篇章,踏上创新的应用之旅。预备知识PART 04任务1 准备一张动物图片 准备一张你感兴趣的动物的图片,建议你用身边的手机把它拍摄下来,然后存放在电脑上或云盘里。根据任务目标,按照以下步骤和操作,完成任务1。 任务目标:在本地保存一张动物图片,或者保存含有动物图片的URL。 完成步骤:拍摄一张含有动物的图片,将它存放在手机里或电脑上。 例如,我们在动物园里给国宝大熊猫照了一张相片,作为本案例的素材

19、来使用。当然,你也可以充分发挥互联网的功效,从它那儿搜索一张你有关大熊猫的图片。大熊猫图片任务1准备一张动物图片PART 05任务2 智能获取动物信息 首先进入百度智能云网站,立即使用它提供的动物识别功能,然后上传你准备的动物图片或图片URL,最后得到识别结果。根据任务目标,按照以下步骤和操作,完成任务2。 任务目标:利用百度智能云提供的人工智能服务,对你提供的图像中的动物进行识别,识别任务就是要了解图像中到底是什么动物。步骤1访问百度动物识别网站步骤2图片上传任务2智能获取动物信息1.访问百度动物识别网站按地址:/tech/imagerecognition/animal 进入动物识别网站,如

20、图所示。动物识别界面任务2智能获取动物信息2.图片上传点击上图中的“功能演示”按钮,上传你在任务1中准备好的图片或粘贴含有动物图片的URL,稍等片刻,就得到如下图的识别信息。 识别结果界面任务2智能获取动物信息 人工智能是研究如何通过机器来模拟人类认知能力的学科,最新的人工智能,突出从数据中学习和在行动中学习。通过近60多年的曲折发展和科学家的不懈努力,人工智能的春天终于到来,并得到迅猛的发展,在智能制造、安全驾驶、机器人和智能服务等方面得到成功的应用。 人工智能这一新兴的科技浪潮正在深刻改变着我们的生活和思维方式,尽管人工智能涉及的知识面众多,但随着开源平台的推出和智能构件的高度封装,已经大

人工智能完整版ppt全套课件整本书电子教案最全教学教程

21、大降低了我们使用人工智能技术的门槛,使得我们能享受它带来的红利和在其它行业的创新应用,AI技术的发展也为我们展现了一个振奋人心的前景,那就是更美好的生活大门等待我们用人工智能的钥匙去开启。任务2智能获取动物信息携手同行,走向辉煌! 初识Python授课人:目录01Python简介02 Python的特点及应用领域浅尝PythonPART 01 Python简介Python由荷兰人Guido van Rossum于1989年设计出来,后由开源核心团队一直在维护和开发,历经Python2.x到Python3.x版本,截止目前最新的版本是Python3.9.1。它是一个高层次的结合了解释性、编译性、

22、互动性和面向对象的脚本语言。Python 的设计具有很强的可读性,相比其它计算机语言它具有更有特色的语法结构,比如,它是解释执行的,可以交互直接执行,也支持面向对象的编程技术,特别适合初学者使用,是一种伟大的语言,它支持广泛的应用程序开发,从简单的文字处理到 WWW 浏览器再到游戏等。Python简介 随着人工智能的兴起,Python在AI界大显身手,这主要得益于它的简单易用、简洁优美、开发效率高。由于它的开源本质,Python已经被移植在许多平台上,Python程序无需修改就可以在任何平台上面运行。特别是Python强大的AI专用第三方库,用少量的代码就能完成复杂的数据挖掘和分析功能,因此P

23、ython稳坐人工智能语言头把交椅也是实至名归。 自2017年首次登顶后,Python蝉联三届冠军。Python受欢迎原因在很大程度上受到大量可用的专用第三方库的影响,特别是在人工智能领域,如Keras库是深度学习开发人员中的重量级人物,Keras提供了TensorFlow的接口、CNTK和Theano深度学习框架和工具包。深度学习并不是Python自发布以来的唯一领域,随着微控制器中计算能力的急剧增加,意味着嵌入式Python版本,如CircuitPython和MicroPython也在制造商中越来越受欢迎。因此,对于新手来说,如果想学一项更容易、更灵活的技术和人工智能编程语言,那Pytho

24、n就是最佳选择。Python简介PART 02Python的特点及应用领域STEP 01Python的特点 Python是目前最流行且发展非常迅猛的语言,随着AI市场的火热也成就了该语言如日中天,得益于该语言具有以下鲜明的特点:Python的特点及应用领域STEP 02Python的应用领域 人工智能和科学运算。Python最大的特色是广泛应用于数据挖掘、机器学习、神经网络、深度学习等人工智能领域,是该领域的主流语言,相关的第三方库有numpy、scipy、matplotlib、keras、mxnet等。随着人工智慧和大数据应用程序的普及,使得Python在科学计算、智能挖掘、图像绘制方面大展

25、身手,得到广泛的支持和应用。 云计算。Python也是云计算方面应用最广的语言,如在OpenStack、百度智能云上的云计算框架就是由Python开发的,Python是从事云计算工作需要掌握的一门编程语言,如果想要深入学习并进行二次开发,就需要具备Python的相关知识和技能。 系统运维。Python语言也是运维人员必须掌握的语言。如利用其标准库中的软件包pywin32就能够轻松访问windows应用程序接口,又如,利用Python编写的管理脚本能更轻松管理Linux,比普通的Shell脚本在可读性、代码重用方面更有优势。 Web程序开发。利用Python的Internet模块和第三方框架Dj

26、ango、Web2py和Zope等,可以快捷开发Web应用程序。如Google爬虫、YouTube视频网站和豆瓣等知名网站,都是使用Python来开发的,可见Python的功力非同凡响。Python的特点及应用领域携手同行,走向辉煌!Python开发环境搭建授课人:目录01安装Python02安装Jupyter Notebook03浅尝PythonPART 01安装Python Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。要利用Python语言进行应用开发,首先要结合系统平台类型来搭建好相应的开发环境,然后才好进行应用开发。整个环境的搭建主要分为开发包下载和安

27、装两个步骤。安装Python(1)下载Python安装包 由于Python可以被移植到许多平台上,如windows、Linux、Mac OS X等,用户进入官网/downloads/,如下图所示,来下载所需的安装文件。Python官网下载页面安装Python 根据操作系统的类别,选择下载最新的安装文件进行安装,不同的平台有不同的安装方法,下面以Windows平台为例,来简单说明Python的下载和安装步骤。 打开 WEB 浏览器访问/downloads/windows/,如右图所示。windows平台的Python安装文件下载页面安装Python 用户可以选择不同的Python版本和不同安装形

28、式下载安装文件,此处选择下载Python3.7.4的可执行安装文件,下图所示。选择可执行的安装包安装Python(2)安装Python 下载安装文件后,双击下载包,进入 Python 安装向导,安装非常简单,你只需要按提示进行操作,直到安装完成即可。在右图所示的安装界面中,选择“Add Python 3.7 to PATH”复选框,将Python的可执行文件路径添加到环境变量Path中,以方便启用各种Python开发工具。 然后点击“Install now”选项,进行下一步的安装,安装成功后的界面如左图所示。安装Python Python安装完成后,在Windows的“开始”菜单中就能看到下图

29、所示的4项快捷菜单。四项命令的含义如下:u Python3.7 Module Docs内置服务式的Python模块帮助文档;u IDLE(Python3.7 64-bit)Python自带的集成开发环境(Integrated Development and Learning Environment);u Python3.7 Manuals(64-bit)Python帮助文档;u Python3.7(64-bit)Python解释器。Python快捷命令项安装PythonPART 02安装Jupyter Notebook Jupyter Notebook是一个开源的Web应用程序,旨在方便开发者

30、创建和共享代码文档。 它提供了一个交互式工作环境,用户可以在里面写代码、单独运行指定代码、查看结果,并在其中可视化数据。 鉴于这些优点,Jupyter Notebook成了数据科学家和人工智能爱好者眼里的一款人见人爱的工具,它能帮助他们便捷地执行各种端到端任务,如数据清洗、统计建模、训练机器学习模型、AI应用开发等。安装 Jupyter Notebook 1.安装jupyter库 以Windows系统为例,在系统命令行下,执行命令pip3 install jupyter,来安装jupyter notebook(建议将pip库镜像地址设置为国内站点)。 2.启动jupyter notebook

31、安装完成后,如果要运行Jupyter Notebook,你只需在控制台输入以下命令:jupyter notebook,即可启动jupyter notebook,如下图所示。启动jupyter notebook安装 Jupyter Notebook 保持它在命令窗口运行,同时它会自动打开你的默认浏览器,网址为http:/ localhost:8888/tree。 如果浏览器因为某些原因无法打开,你就需要复制这个URL到浏览器地址栏中,手动打开相应网址,如右上图所示。 单击下拉按钮“New”,在出现的下拉列表中选择你需要创建的Notebook类型,包括“Text File”纯文本类型、“Folde

32、r”文件夹和“Python3”运行脚本三种文件类型。至此,整个开发环境就搭建完毕,用户就可以利用jupyter notebook这个工具来披荆斩棘,探索人工智能学习之旅。jupyter主页面安装 Jupyter Notebook PART 03浅尝Python 我们利用jupyter集成开发学习环境就可以小试牛刀,浅尝一下Python的开发魅力。由于Python是一种脚本语言,所以,首先我们在jupyter中编写Python脚本源程序,然后调用Python解释器解释执行源程序,最后得到执行结果。下面,以求解三角形的面积为例,具体了解在jupyter环境下,如何编写和运行Python程序。【引例

33、】用jupyter写一个Python源程序,计算三角形的面积。1)引例描述输入三角形的三条边,用海伦公式计算由这三边构成的此三角形的面积。2)引例分析首先用3个变量保存从键盘输入的3条边的值,然后按下列海伦公式计算面积,将其保存到1个变量s中,最后打印出变量s的值即完成任务。 其中浅尝Python 1.新建一个脚本源程序。在jupyter主页新建一个文件夹chapter2,然后打开该文件夹,在其中新建一个名为“case2-1”的Python3脚本源程序,如下图所示。新建的case2-1脚本源程序浅尝Python 1example2-123计算三角形的面积45import math6a=eva

34、l(input(输入三角形a边长:)7b=eval(input(输入三角形b边长:)8c=eval(input(输入三角形c边长:)9if a+b=c or a+c=b or b+c1,然后根据上述公式计算狗的相当人类的年龄。分支结构 3)引例实现实现的代码如下。1age = int(input(请输入你家狗狗的年龄: )2if age = 0:4 print(你是在逗我吧!)5elif age = 1:6 print(相当于 14 岁的人。)7else:8 human = 22 + (age -2)*59print(对应人类年龄: , human) 执行左述代码,输入狗的年龄,运行结果如下图

35、所示。程序计算结果分支结构 PART 03循环结构 可以尝试输入不同的狗狗的年龄,来了解对应人类的年龄,从而验证不同分支是否都可以执行到。如果我们想多次重现计算狗狗的年龄,那又如何能做到呢?循环结构 循环结构是程序中一种常见的流程,它是指在一定条件下,反复执行某段程序代码的控制结构,反复执行的语句块称为循环体。Python的循环while 循环for 循环循环结构 while循环的执行流程u while循环 由此可见,while循环过程是先判断循环条件是否成立,若为True,则执行循环体,循环体执行完后再转向逻辑条件,计算并判断是否继续循环,如果条件为False,则执行while语句后面循环体

36、外的语句。 while循环的一般语法格式为:while 判断条件(condition): 执行语句(statements)循环结构 【引例】能够多次计算狗狗的相当人类的年龄。1)引例描述 能反复计算不同年龄狗狗的相当人类的年龄,直到用户按“Q”键退出。2)引例分析 在分支结构的引例的基础上,将其作为循环体来使用,如果用户输入的是数字,则计算狗的年龄,如果输入的是“Q”,则退出程序,其它情况则提示用户“请输入数字,Q键退出!”。循环结构 实现代码如下:1while True:2 age=input(请输入你家狗狗的年龄: )3 if age.isdecimal():4 age=int(age)5

37、 if age = 0:6 print(你是在逗我吧!)7 elif age = 1:8 print(相当于 14 岁的人。)9 else:10 human = 22 + (age -2)*511 print(对应人类年龄: , human)12 elif age.upper()=Q:13 print(计算结束!)14 break15 else:16 print(请输入数字,Q键退出!) 3)引例实现循环结构 u for循环 for循环是Python中更常用的一种循环,因为在人工智能的数据处理方面,这些数据往往是以序列、数组或矩阵的形式存放的,数据本身的结构、大小是有规律的,故往往采用for循

38、环来遍历数据集合中的元素。 for执行流程图for循环的语法格式如下:for in : 循环结构 【引例】计算1+2+3+100之和。 1)引例描述 从1开始累加,计算1100所有整数之和。 2)引例分析 首先要产生一个1,2,100的一个整数序列,然后通过for 循环依次取出每一个元素,将它们累加起来,最后打印出累 加结果即可。循环结构 实现代码如下:1sum=02for i in range(101):3 sum+=i4print(1100的累加和=,sum)程序执行结果3)引例实现循环结构 PART 04组合类型 Python除了整数、浮点数等基本的数据类型外,还提供了列表、元祖、字典和

39、集合等组合数据类型。通过组合数据类型能将不同的数据组织起来,实现更复杂的数据表示和数据功能。下面了解最常用的三种组合类型:列表、元祖和字典。组合类型 u 列表 列表用方括号“”来表示,里面的各元素用逗号分开。列表的各元素可以是不同的数据类型。创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。如下所示:list1 = 百度, nanjing, 1997, 20.57可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:print (第三个元素为 : , list12)list11 = 南京更新第二个元素list1.append(中国)增加一个

40、新的元素操作后的列表list1内容如下图所示。组合类型 关于列表其它操作内容,请参考/python3/python3-list.html。组合类型 u 元祖 Python 的元组与列表类似,不同之处在于元组的元素不能修改,可以把它看作一个特殊的列表。元组使用小括号“()”表示。元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。创建元祖的代码如下所示。tup1 = (百度, nanjing, 1997, 20.57) 虽然元组中的元素值是不允许修改的,但可以对元组进行连接组合,如下代码所示。tup2 = (华为, 5G技术)tup=tup1+tup2组合后的内容如下图所示。组合后tup

41、的内容组合类型 无论是列表还是元祖,都可以看作是一个保存混合数据的容器,例如,可以利用如下形式来保存一系列学生的成绩记录。records=张海,68,89,91,李慧,67,80,88,王霞,78,89,82 每一条学生的成绩记录用一个列表来表示,也就是列表的元素可以是一个列表,同样的情况,列表的元素可以是一个元祖。records变量的内容如下图所示。 用列表形式保存学生成绩记录组合类型 u 字典 字典是另一种可变容器模型,且也可存储任意类型对象,它可以看作是由键值对构成的列表。字典的每个键值 key=value 对用冒号 : 分割,每个键值对之间用逗号(,)分割,整个字典包括在花括号“”中,

42、一个简单的字典实例如下所示。 dict = 张海: 男,18,南京,李慧: 女,21,武汉,王霞: 女,19,苏州 在该字典中,用姓名作为字典的键类使用,要保证姓名是唯一的,如果姓名不唯一,则可以使用学生的学号作为键来使用,总之要保证字典里的键是唯一的。组合类型 在搜索字典时,首先查找键,键找到后就可以直接获取该键对应的值,这是一种高效、实用的查找方法。例如,要找字典dict中李慧的个人信息,代码及执行结果如下图所示。 字典的修改和添加可以通过如下形式的代码来完成。dict张海 = 男,20,上海 更新字典值dict方佳 = 女,18,广州 添加键值对更新后的字典dict内容如下图所示

43、。找出的李慧个人信息更新后的字典dict的内容组合类型 字典在使用过程中,要注意以下几点: 不允许同一个键出现两次,创建字典时如果同一个键被赋值两次,后一个值会被记住。 键必须不可变,所以可以用数字、字符串或元组充当,而用列表就不行。组合类型 携手同行,走向辉煌!numpy库基础应用授课人: 人工智能的应用,离不开大量数值计算,numpy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库,与pandas、matplotlib号称数据分析三剑客,正是由于这些扩展库的存在和发展,不断推动着人工智能应用的

44、持续开发和进步。目录01求解三元一次方程02数组计算03向量化处理PART 01求解三元一次方程 Python作为机器学习和深度学习的主流编程语言,在人工智能具体应用方面提供了丰富的库函数,也就是更多的第三方库的支持。numpy就是专用于科学计算和数据分析的最基础的函数包,其中包含了大量的工具,可以完成矩阵运算、求特征值、解线性方程、向量乘积和归一化计算等,这些功能为图像分类、数据聚类等人工智能基础应用提供了计算基础。求解三元一次方程 numpy不是Python内置的第三方库,要通过下列方式安装后才可以使用。进入cmd命令窗口,使用Python自带的用于安装第三方库的pip3工具,执行以下命令

45、: pip3 list 列出当前系统中已经安装的第三方库,如下图所示。 如果结果列表中没有找到numpy库名称,说明还没有安装,就需要继续执行以下命令:pip3 install numpy 就能从网络上自动下载相关文件并安装numpy到系统中,安装过程如下图所示。 pip3 list命令执行结果 numpy的安装过程求解三元一次方程【引例】利用numpy库求解下列三元一次方程。1)引例描述求解下列三元一次方程。2) 引例分析首先按x、y、z的次序将各未知变量的系数排成一个33的矩阵,同时将对应的常数项也排除一个13的矩阵,如下图所示。 然后利用numpy库中的linalg模块就可以求解线性方程

46、组。矩阵样式求解三元一次方程3)引例实现实现的源代码如下。1import numpy as np2A=np.mat(1,2,1,2,-1,3,3,1,2)3b=np.array(7,7,18)4x=np.linalg.solve(A,b)5print(x) 上述代码中,代码行1中的np是导入库numpy的一个别名,代码行2利用np中的函数mat()生成一个二维矩阵A,代码行3利用函数array()生成一个一维数组b,代码行4调用linalg线性代数模块中的sovle函数求解方程组。 执行该程序模块,运行结果如下图所示。方程组求解结果求解三元一次方程3)引例实现 读者可以将x=7,y=1,z=-

47、2的值分别代回原方程组,以验证求解是否正确。或执行以下命令:np.dot(A,x)计算结果如下图所示。观察计算结果是否与常数项数组b一致。 矩阵乘积运算 结果求解三元一次方程PART 02数组计算 数组是numpy中最基础的数据结构,N维数组对象是ndarray,它是一系列同类型数据的集合,以0下标为开始进行集合中元素的索引。ndarray对象是用于存放同类型元素的多维数组,类似于一个多行多列的表格来存放数据。 数组在人工智能的数据处理方面得到广泛的应用,例如,在深度学习中,神经元之间的链接关系往往采用数组形式的参数来表示,还有对大数据的统计分析,也常常采用数组特性进行排序、去重和统计计算等,

48、使用numpy库提供的数组操作,比常规的Python数组操作有更高的效率和更简洁的编程代码。数组计算【引例】统计鸢尾花特征值的最大值、最小值和标准差等。1)引例描述 利用机器学习中常用的鸢尾花植物数据集iris,来统计花萼长度的最大值、最小值、均值、标准差和方差。 2)引例分析 首先利用numpy从数据集文件iris.csv中读取数据,提取花萼长度数据,然后对花萼长度特征数据进行统计计算。数组计算实现的源代码如下:1import numpy as np2iris_data=np.loadtxt(./data/iris.csv,delimiter=,skiprows=1)3print(type(

49、iris_data)4print(iris_data.shape)5print(花萼长度的最大值:,np.max(iris_data:,1)6print(花萼长度的最小值:,np.min(iris_data:,1)7print(花萼长度的平均值:,np.mean(iris_data:,1)8print(花萼长度的标准差:,np.std(iris_data:,1)9print(花萼长度的方差:,np.var(iris_data:,1) 上述代码中,代码行2中的函数loadtxt是加载文件,文件中数据项是采用“,”作为分隔符,跳过第一行列标题。代码行3的Type函数是检查数据对象的类型。代码行4的

50、Shape函数返回对象iris_data的尺寸大小,后面的代码依次调用np的相关函数统计花萼长度的特征数据。3)引例实现数组计算3)引例实现运行程序块,结果如下图所示。 图2.28 花萼长度的统计结果数组计算PART 03向量化处理 在第一章谈到,关于计算机的深度学习是人工智能的一个重要研究方向,在深度学习过程中,需要对原始的信号进行逐层特征变换,常常面临大量的向量和矩阵运行,试图将高度复杂的计算过程转化成相对简单的向量乘积。显然,当数据量巨大时,如果采用传统的计算方法势必造成浪费大量计算时间,而利用numpy提供的向量化处理方法则能降低计算耗时。向量化处理【引例】用向量化和非向量化两种不同方

51、式计算房屋单价。1)引例描述 文件house_data是某城市房屋的面积和售价的数据集,请分别用传统遍历方法和向量方法分别计算房屋的单价(万元/m2),并对比计算用时的差距。 2)引例分析 首先将文件数据集合导入到Python数组house_data中,分别将house_data的第一列、第二列数据存到数组vec1、vec2中,分别用遍历和向量的方法计算房屋单价,用time.time()函数统计计算用时,最后输出计算用时,对比两种方法的计算效率。向量化处理3)引例实现先用如下代码读入房屋数据。 代码行2导入时间包,代码行4-5分别将所有行的第1列、第2列数据保存到向量vec1、vec2中,然后

52、分别采用两种方式进行计算所有房屋的价格。1import numpy as npx2import time3house_data=np.loadtxt(./data/house_data.txt,delimiter=,)4vec1=house_data:,05vec2=house_data:,1向量化处理3)引例实现! 采用非向量方式计 代码1和代码5是记下开始和结束的时间,代码行2 是用zeros函数产生初始值为0的指定数量元素的一维向量(数组),代码3-4采用传统循环方式逐个计算每间房屋的单价。! 采用向量方式计算 代码行2直接采用向量除法来计算房屋的面积,可以看出,本方法在代码量上要简洁得

53、多,那效率如何呢?两种方法的计算结果如下图所示。两种计算方法耗时结果对比实现代码如下:1t_start=time.time()2v3=vec2/vec13t_end=time.time()4print(向量化耗时:+str(t_end-t_start)*1000000)+微秒)实现代码如下:1t_start=time.time()2vec3=np.zeros(len(vec1)3for i in range(len(vec1):4 vec3i=vec2i/vec1i5t_end=time.time()6print(非向量化耗时:+str(t_end-t_start)*1000000)+微秒)向

54、量化处理携手同行,走向辉煌!matplotlib库基础应用授课人: matplotlib是一个Python 2D绘图库,它以多种硬拷贝格式和跨平台的交互式环境生成高质量的图形。matplotlib 尝试使容易的事情变得更容易,使困难的事情变得可能。您只需几行代码就可以生成图表、直方图、功率谱、条形图、误差图、散点图等,为大数据的可视化和人工智能的图形化分析提供了大量绘图函数。更多的应用示例,可以中文官网/,无数默默的国内开发者为matplotlib贡献着自己的一份力量。下面,就让我们一睹它的风采。目录01绘制直方图02绘制撒点图人工智能的特征及典型应用PART 01绘制直方图 Python的第

55、三方库matplotlib提供了丰富的绘图功能,在正式绘图之前,需要在cmd命令窗口中执行如下命令:pip3 install matplotlib 安装完matplotlib后,就可以在notebook中来使用它强大的绘图功能进行数据的可视化操作。在数据的可视化过程中,要根据具体的数据可视化分析要求,选用不同的绘图函数来分析数据特征间的关系、查看变量的变化趋势、了解数据的整体分布情况等,去真正读懂数据,为数据深度分析和数据决策提供图形化的信息。下面,就以绘制直方图为例,来进一步了解此类图形能为我们带来哪些数据解读信息。绘制直方图【引例】用直方图描述2017年到2018年间各季度第一产业的生产总

56、值情况。1)引例描述 第一产业的生产总值保存在GDP.csv文件中,用matplotlib绘制第一产业生产总值的直方图,并进行对比分析。 2)引例分析 首先利用numpy库将文件数据读入到二维数组中,作为绘图函数的数据源来使用,然后用matplotlib的直方图绘图函数bar()将数组中“第一产业”列的数据以柱状图进行展现。绘制直方图实现的代码如下。1import numpy as np2import matplotlib.pyplot as plt3plt.rcParamsfont.family = SimHei 将全局的字体设置为黑体4GDP_data=np.loadtxt(./data

57、/GDP.csv,delimiter=,skiprows=1)5quarter=GDP_data0:8,0.astype(int)6plt.bar(height=GDP_data0:8,1,x=range(len(GDP_data0:8,1),label=第一产业GDP,tick_label=quarter)7plt.legend()8plt.show() 代码行3将全局的字体设置为黑体,代码行5将数组值转换成整数,代码行6绘制柱状图,其高度用参数height来指定,即二维数组中第1列的值,柱状图x坐标用第1产业的数据个数来表示,参数lable是图例标签,参数tick_label是x轴标签。代

58、码行7显示图例,代码行8是显示图形。3)引例实现绘制直方图3)引例实现程序的运行结果如下图所示。 第一产业各季度GDP数据示意图 由左图可以直观看出,在前8个季度中,2018年第4季度的GDP最大,最小值在2017年的第1季度,最大值将近是最小值的3倍多。另外,每年4个季度的GDP都趋于不断增长的势头,且不同年份对应的各季度的GDP也同样呈现出上升的趋势。由此可见,通过图形的方式对数据进行可视化,能直观解读数据内隐含的变化趋势,为数据统计和分析提供了一种便捷手段。绘制直方图PART 02绘制撒点图 散点图是利用一系列的散点将两个变量的联合分布描绘出来,让我们从图形分布中推断一些信息,如两变量间

59、是否存在某种有意义的关系。散点图是统计分析中常用的一种手段,特别是在分类统计图形中,它可以算得上是中流砥柱,当数据以恰当的方式在图形中展示出来时,我们就可以非常直观地观察到某些趋势或者模式,也就揭示了变量之间的关系。绘制撒点图 seaborn是在matplotlib基础上面的封装,方便直接传参数调用,让你能做出更加吸引人注意的图表,并有助于你更好分析数据,有关详情请访问其官网:。 使用pip3 install seaborn命令安装完seaborn库后才能使用其绘图功能。 Seaborn官网主页绘制撒点图【引例】用散点图分析鸢尾花的花瓣的宽度和长度之间的相关性。1)引例描述 鸢尾花有关花瓣和花

60、蕊的数据保存在iris.csv文件中,我们试图从花瓣的宽度和长度的视角去探索鸢尾花的品种类别是否与花瓣有关。 2)引例分析 首先利用Pandas库将文件数据读入到数据框中,然后利用seaborn的关系图函数relplot绘制散点图。为便于观察,利用数据框中的种类列Species来区分颜色和散点样式。绘制撒点图3)引例实现实现代码如下所示。1import pandas as pd2import matplotlib.pyplot as plt3import seaborn as sns4iris=pd.read_csv(./data/iris.csv)5sns.set(style=whitegr