主讲:谢赞福
Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
python语言是一门解释型,动态,强类型编程语言。它既能进行面向过程编程,也能进行面向对象编程、甚至还可以使用函数式编程,能广泛用于多种编程领域的语言,已具有二十多年的发展历史,成熟且稳定。它集合了许多程序语言的特性,拥有许多程序语言所没有的优点,具体如下表所示。
特点 | 优点 | 缺点 |
开源 | 免费;所有函数、对象都可溯源;良好的社区环境;第三方支持强 | 代码加密困难;第三方库质量参差不齐 |
语法简洁 | 学习周期短、难度低;代码可读性强 | 无 |
解释型语言 | 代码结果实时输出,方便定位异常;程序发布简单,无需编译 | 相较于C++,程序执行效率较低 |
动态 | 自动定义数据类型、小幅度降低代码量 | 略微降低了可读性 |
强类型 | 类型前后一致、溯源方便、管理方便;小幅提升了代码可读性 | 如果需要其他类型需要自主转换 |
面向过程 | 性能高;设计简单 | 程序耦合程度高 |
面向对象 | 维护方便;可扩展性强;复用性高 | 需具备面向对象的思想;执行效率相较于面向过程略低 |
函数式编程 | 代码简洁;代码可读性高;易于并发编程;代码易于管理 | 问题抽象函数能力需长期练习 |
Python与机器学习
Python作为一门理想的集成语言,将各种技术绑定在一起,除了为用户提供更方便的功能之外,还是一个理想的粘合平台,为开发人员与外部库的低层次集成人员之间搭建连接,用C∕C++实现更高效的算法。开发者在Python中封装了很多优秀的依赖库,如下表所示。
库名 | 介绍 |
NumPy | 支持多维数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 通常与SciPy(Scientific Python)和Matplotlib(绘图库)一起使用,这种组合广泛用于替代Matlab,是一个流行的技术平台 |
pandas | 一款开放源码的BSD许可的Python库。基于NumPy创建,为Python编程语言提供了高性能的、易于使用的数据结构和数据分析工具。pandas应用领域广泛,包括金融,经济,统计,分析等学术和商业领域 |
SQLAlchemy | 一种既支持原生SQL,又支持ORM的工具,ORM是Python对象与数据库关系表的一种映射关系,可有效提高写代码的速度,同时兼容多种数据库系统,如sqlite、mysql、postgresql,代价为性能上的一些损失,其余类似的数据库开发库还有MySQL-python、mysqlclient、PyMySQL |
库名 | 介绍 |
Matplotlib | 第一个Python可视化库,有许多别的程序库都是建立在其基础上或者直接调用该库,可以很方便的得到数据的大致信息,功能非常强大,也非常复杂 |
Seaborn | 利用了matplotlib,用简洁的代码来制作好看的图表,跟matplotlib最大的区别为默认绘图风格和色彩搭配都具有现代美感 |
scikit-learn | Python机器学习标准库,又称sklearn,在众多机器学习模块中比较优秀,汇集了各种监督学习、非监督学习、半监督学习的方法,提供现成的功能来实现诸如线性回归、分类器、SVM、k-均值和神经网络等多种算法,并包含一些可直接用于训练和测试的样本数据集。除scikit-learn以外,Python中其他类似的机器学习库还有Orange3、XGBoost、NuPIC、Milk |
TensorFlow | 由Google团队开发的神经网络模块,一个采用数据流图来进行数值计算的开源软件库,可绘制计算结构图,为一系列可人机交互的计算操作,编辑好的Python文件将被转换成更高效的C++,并在后端进行计算。其他比较常用的深度学习库还有Caffe、Theano、Keras |
人工智能(AI)的基本内容
人工智能基本概念、方法和技术
基本技术:知识表示、推理、搜索、规划
人工智能的主要研究、应用领域
机器感知:机器视觉;机器听觉;自然语言理解;机器翻译
机器思维:机器推理
机器学习:符号学习;连接学习
机器行为:智能控制
智能机器:智能机器人;机器智能
智能应用:博弈;自动定理证明;自动程序设计;专家系统;智能决策;智能检索;智能CAD;智能CAI;智能交通;智能电力;智能产品;智能建筑等
人工智能新技术
计算智能:神经计算;模糊计算;进化计算;自然计算
人工生命:人工脑;细胞自动机
分布智能:多Agent , 群体智能
数据挖掘:知识发现;数据挖掘
一个新兴的“智能科学与技术学科”正在兴起
智能包含的能力(一)
感知能力
通过感知器官感知外界的能力。是人类获得外界信息的基本途径,其处理方式有以下两种:
感知--动作方式:对简单、紧急信息
感知--思维--动作方式:对复杂信息
记忆和思维能力
记忆:对感知到的外界信息和由思维产生的内部知识的存储过程
思维:对已存储信息或知识的本质属性、内部知识的认识过程
思维方式:
抽象思维(逻辑思维):根据逻辑规则对信息和知识进行处理的理性思维方式。例如,逻辑推理等
形象思维(直感思维):基于形象概念,根据感性形象认识材料对客观现象进行处理的一种思维方式。例如,图像、景物识别等
灵感思维(顿悟思维):是一种显意识和潜意识相互作用的思维方式。例如,因灵感而顿时开窍
智能包含的能力(二)
学习和自适应能力
学习:是一个具有特定目的的知识获取过程
是人的一种本能。不同人的学习方法、能力不同
自适应:是一种通过自我调节适应外界环境的过程
是人的一种本能。不同人的适应能力不同
行为能力
含义:是人们对感知到的外界信息作出动作反应的能力
信息来源:由感知直接获得的外界信息
经过思维加工后的信息
实现过程:通过脊髓来控制
由语言、表情、体姿等来实现
AI的产生与发展从学派分立到综合(20世纪80年代到本世纪初)
人工智能研究形成了三大学派:
随着人工神经网络的再度兴起和布鲁克(R.A.Brooks)的机器虫的出现,人工智能研究形成了符号主义、连接主义和行为主义三大学派。
符号主义学派
是指基于符号运算的人工智能学派,他们认为知识可以用符号来表示,认知可以通过符号运算来实现。例如,专家系统等。功能模拟:构造能够模拟大脑功能的智能系统。相当于“鸟飞”
连接主义学派
是指神经网络学派,在神经网络方面,继鲁梅尔哈特研制出BP网络之后,1987年,首届国际人工神经网络学术大会在美国的圣迭戈(San-Diego)举行,掀起了人工神经网络的第二次高潮。之后,随着模糊逻辑和进化计算的逐步成熟,又形成了“计算智能”这个统一的学科范畴。
结构模拟: 构造模拟大脑结构的神经网络系统。相当于“飞鸟”
行为主义学派
是指进化主义学派,在行为模拟方面,麻省理工学院的布鲁克教授1991年研制成功了能在未知的动态环境中漫游的有6条腿的机器虫。行为模拟: 构造具有进化能力的智能系统。相当于“由猿到人”
三大学派的综合集成
随着研究和应用的深入,人们又逐步认识到,三个学派各有所长,各有所短,应相互结合、取长补短,综合集成。
智能模拟的方法和技术应用
机器感知 就是要让计算机具有类似于人的感知能力,如视觉、听觉、触觉、嗅觉、味觉
机器视觉(或叫计算机视觉):就是给计算机配上能看的视觉器官,如摄像机等,使它可以识别并理解文字、图像、景物等
机器听觉(或叫计算机听觉):就是给计算配上能听的听觉器官,如话筒等,使计算机能够识别并理解语言、声音等。
机器感知相当于智能系统的输入部分。
机器感知的专门的研究领域:计算机视觉、模式识别、自然语言理解
机器思维
让计算机能够对感知到的外界信息和自己产生的内部信息进行思维性加工
逻辑思维
形象思维
灵感思维
机器学习 让计算机能够像人那样自动地获取新知识,并在实践中不断地完善自我和增强能力。
机器学习方法:机械学习、类比学习、归纳学习、发现学习、遗传学习和连接学习等
机器行为 让计算机能够具有像人那样地行动和表达能力,如走、跑、拿、说、唱、写画等。
相当于智能系统的输出部分。
智能系统与智能机器
无论是人工智能的近期目标还是远期目标,都需要建立智能系统或构造智能机器
需要开展对系统模型、构造技术、构造工具及语言环境等研究
机器学习概述 (1)符号学习
符号学习的概念:是指从功能上模拟人类学习能力的机器学习方法,它是一种基于符号主义学派的机器学习观点。
符号学习的类型:可根据学习策略,即学习中所使用的推理方法,将其分为记忆学习、归纳学习、演绎学习等。
记忆学习也叫死记硬背学习,它是一种最基本的学习方法,原因是任何学习系统都必须记住它们所获取的知识,以便将来使用。
归纳学习是指以归纳推理为基础的学习,它是机器学习中研究得较多的一种学习类型,其任务是要从关于某个概念的一系列已知的正例和反例中归纳出一个一般的概念描述。例如,示例学习和决策树学习。
演绎学习是指以演绎推理为基础的学习,解释学习是一种演绎学习方法,它是在领域知识的指导下,通过对单个问题求解例子的分析,构造出求解过程的因果解释结构,并对该解释结构进行概括化处理,得到一个可又来求解类似问题的一般性知识。
机器学习(2)神经学习
神经学习的概念:神经学习也称为连接学习,它是一种基于人工神经网络的学习方法。现有研究表明,人脑的学习和记忆过程都是通过神经系统来完成的。在神经系统中,神经元既是学习的基本单位,同是也是记忆的基本单位。
神经学习的类型:
感知器学习实际上是一种基于纠错学习规则,采用迭代的思想对连接权值和阈值进行不断调整,直到满足结束条件为止的学习算法。
BP网络学习是一种误差反向传播网络学习算法。这种学习算法的学习过程由输出模式的正向传播过程和误差的反向传播过程所组成。其中,误差的反向传播过程用于修改各层神经元的连接权值,以逐步减少误差信号,直至得到所期望的输出模式为止。
Hopfield网络学习实际上是要寻求系统的稳定状态,即从网络的初始状态开始,逐渐向其稳定状态过渡,直至达到稳定状态为止。至于网络的稳定性,则是通过一个能量函数来描述的。
机器学习 (3)数据挖掘和知识发现
概念:知识发现和数据挖掘是在数据库的基础上实现的一种知识发现系统。它通过综合运用统计学、粗糙集、模糊数学、机器学习和专家系统等多种学习手段和方法,从数据库中提炼和抽取知识,从而可以揭示出蕴含在这些数据背后的客观世界的内在联系和本质原理,实现知识的自动获取。
与传统数据库技术的区别:传统数据库技术仅限于对数据库的查询和检索,不能够从数据库中提取知识。知识发现和数据挖掘以数据库作为知识源去抽取知识,不仅可以提高数据库中数据的利用价值,同时也为各种智能系统的知识获取开辟了一条新的途径。
发展:随着大规模数据库和互联网的迅速发展,知识发现和数据挖掘也从面向数据库的结构化信息的数据挖掘发展到面向数据仓库和互联网的海量、半结构化或非结构化信息的数据挖掘。
人工智能近期发展分析 智能应用和智能产业
智能技术将进一步与主流信息技术融合,并将应用于人类社会的各个领域和人类生活的各个方面。
有人预计:智能产业将逐步成为社会第四产业;智件将逐步从软件中分离出来,成为智能计算机系统的三件(硬件、软件、智件)之一。
智能科学技术理论与方法 : AI理论、认知、计算智能、专家系统、智能决策、分布智能、 Agent技术、人工情感、人工生命等。
智能信息处理: 自然语言处理、数据挖掘、模式识别、机器感知、信息融合、智能信息网络等。
智能系统与工程: 智能接口与人机交互、集成智能、机器视觉、智能机器、智能机器人、智能控制、智能工程、智能教学系统等
人工智能与大数据
近年来,由于成本低廉的大规模并行计算、大数据、深度学习、人脑芯片4大催化剂的齐备,导致人工智能的发展出现了井喷趋势。
大数据(BigData)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。
人工智能和大数据联系:
人工智能打个比方,像张无忌吸收好多武林前辈的武功秘籍,不断的深度学习和广泛训练,逐渐进化升级为一个武林高手。
大数据相当于张无忌从小到大学习、记忆和存储的海量武功秘籍(武学知识),这些武学知识只有通过他消化、吸收、再造才能创造出更大的价值或本领。
可以看出,大数据是不断采集、沉淀、分类等数据积累,人工智能是基于大数据的支持和采集,运用于人工设定的特定性能和运算方式来实现。因此,人工智能离不开大数据,人工智能需要依赖大数据平台和技术来帮助完成深度学习进化。
人工智能和大数据既有联系又有区别,且可以协同工作。
人工智能需要通过试验和错误学习,需要大数据来教授和培训人工智能。人工智能需要依托大数据来建立其智能。
在大数据在人工智能中发挥作用的同时,人工智能研发者千万不要忘了,合理地收集和利用大数据,注意个人隐私的保护。对数据进行智能分析的人工智能只是人工智能的一部分,并非全部。
Python环境配置
1. Anaconda简介
Anaconda是一个Python的集成开发环境,可以便捷的获取库且提供对库的管理功能,同时对环境可以统一管理的发行版本。Anaconda包含Conda、Python在内的超过180个科学库及其依赖项。其主要特点为:开源、安装过程简单、高性能使用Python和R语言、免费的社区支持等。其包含的科学库包括Conda、NumPy、SciPy、IPython Notebook等。Anaconda支持目前主流的多种系统平台,包含Windows、macOS和Linux(x86∕Power8)。
2. 安装Anaconda3
登录Anaconda官网
3.Jupyter Notebook的使用
进入Jupyter Notebook
进入Jupyter Notebook可通过两种方式,一种为直接单击菜单目录中Anaconda 3下的Jupyter Notebook;另一种进入Jupyter Notebook的方法则是通过CMD。若安装Anaconda 3时选择添加了环境变量,则可以在CMD中输入“jupyter notebook”来启动。若安装Anaconda 3时没有选择添加环境变量,又想通过cmd命令行进行启动,则可以在系统环境变量中手动添加如下路径。
若想通过自定义端口号启动Jupyter Notebook,可以在终端中输入以下命令。
其中,“<port_number>”为用户想要指定自定义端口号,直接以数字的形式写在命令当中,数字的两边不需要加“< >”。如“jupyter notebook --port 8999”表示在端口号为“8999”的服务器启动Jupyter Notebook。
当启动成功后,浏览器将会进入到Notebook的主页面,如下图所示。
单击右上角的“New”按钮,在弹出的标签栏中选择“Python 3”即可创建一个Python文件,如下图所示。
创建成功后,将进入笔记本页面,如下图所示。