Python程序设计- 面向人工智能应用开发(TensorFlow、Keras、PyTorch)课件 第4-10章 人工智能应用开发的常用算法与模型 -使用PyTorch库实现机器学习应用_第1页
Python程序设计- 面向人工智能应用开发(TensorFlow、Keras、PyTorch)课件 第4-10章 人工智能应用开发的常用算法与模型 -使用PyTorch库实现机器学习应用_第2页
Python程序设计- 面向人工智能应用开发(TensorFlow、Keras、PyTorch)课件 第4-10章 人工智能应用开发的常用算法与模型 -使用PyTorch库实现机器学习应用_第3页
Python程序设计- 面向人工智能应用开发(TensorFlow、Keras、PyTorch)课件 第4-10章 人工智能应用开发的常用算法与模型 -使用PyTorch库实现机器学习应用_第4页
Python程序设计- 面向人工智能应用开发(TensorFlow、Keras、PyTorch)课件 第4-10章 人工智能应用开发的常用算法与模型 -使用PyTorch库实现机器学习应用_第5页
已阅读5页,还剩169页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章

人工智能应用开发的常用算法与模型请在此输入您的副标题汇报人:代用名目录4.1监督学习模型4.2无监督学习模型4.3半监督学习4.4文本处理模型4.5强化学习4.6深度学习4.7模型评价指标4.8人工神经网络4.9人工智能程序的构建过程引言:本章主要介绍人工智能应用开发的常用模型、常用算法,模型的评价指标,特别重点介绍了人工神经网络。最后,介绍了构建人工智能程序的过程。人工智能的应用是通过对数据的智能化处理完成的,由于是智能程序,因此具备学习能力,进而可以产生对人们有帮助的数据和结果。在众多应用中,具有代表性的有数据分析和数据挖掘等相关应用。数据分析简单地说,就是对数据进行分析,比较专业的说法是,数据分析是指用适当的统计分析方法对收集来的大量数据进行分析,未提取有用信息和形成结论而对数据加以详细研究和概括总结的过程。以求最大化地开发数据的功能,发挥数据的作用。数据挖掘(DataMining)就是从大量的数据中,提取隐藏在其中的,事先不知道的、但潜在有用的信息的过程。数据挖掘的目标是建立一个决策模型,根据过去的行动数据来预测未来的行为,是一门交叉学科,它涉及了数据库,人工智能,统计学,可视化等不同的学科和领域。数据分析和挖掘都是基于搜集来的数据,应用数学、统计、计算机等技术抽取出数据中的有用信息,进而为决策提供依据和指导方向。应用漏斗分析法挖掘出用户体验过程中的不足之处,从而进一步改善产品的用户流程。利用AB测试法检验网页布局的变动对交易转化率的影响,从而确定这种变动是否有利。基于RFM模型实现用户的价值分析,进而针对不同价值等级的用户采用各自的营销方案,实现精准触达。机器学习和数据挖掘是紧密相关的,要进行数据挖掘需要掌握一些机器学习所用的方法和模型知识,通过模型的训练可以得到处理数据的最优的模型。4.1监督学习模型4.1.1决策树4.1.2贝叶斯方法

4.1.3神经网络4.1.4支持向量机(SVM)

4.1.5集成学习分类模型4.1.6其他分类学习模型4.1监督学习模型就是人们常说的分类,通过已有的训练样本(即已知数据以及其对应的输出)去训练得到一个最优模型(这个模型属于某个函数的集合,最优则表示在某个评价准则下是最佳的),再利用这个模型将所有的输入映射为相应的输出,对输出进行简单的判断从而实现分类的目的,也就具有了对未知数据进行分类的能力。4.1.1决策树决策树是用于分类和预测的主要技术之一,决策树学习是以实例为基础的归纳学习算法,它着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。构造决策树的目的是找出属性和类别间的关系,用它来预测将来未知类别的记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性采用的技术、生成的决策树的结构、剪枝的方法以及时刻,能否处理大数据集等方面都有各自的不同之处。4.1.2贝叶斯方法贝叶斯(Bayes)分类算法是一类利用概率统计知识进行分类的算法,如朴素贝叶斯(NaiveBayes)算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提,而此假设在实际情况中经常是不成立的,因而其分类准确性就会下降。为此就出现了许多降低独立性假设的贝叶斯分类算法,如TAN(TreeAugmentedNativeBayes)算法,它是在贝叶斯网络结构的基础上增加属性对之间的关联来实现的。4.1.3神经网络神经网络是一种应用类似于大脑神经突触联接的结构进行信息处理的数学模型。在这种模型中,大量的节点(称”神经元”)之间相互联接构成网络,即”神经网络”,以达到处理信息的目的。神经网络通常需要进行训练,训练的过程就是网络进行学习的过程。训练改变了网络节点的连接权的值使其具有分类的功能,经过训练的网络就可用于对象的识别。目前,神经网络已有上百种不同的模型,常见的有BP神经网络、径向基RBF网络、Hopfield网络、随机神经网络(Boltzmann机)、竞争神经网络(Hamming网络,自组织映射网络)等。但是当前的神经网络仍普遍存在收敛速度慢、计算量大、训练时间长和不可解释等缺点。4.1.4支持向量机(SVM)支持向量机(SVM,SupportVectorMachine)是根据统计学习理论提出的一种新的学习方法,它的最大特点是根据结构风险最小化准则,以最大化分类间隔构造最优分类超平面来提高学习机的泛化能力,较好地解决了非线性、高维数、局部极小点等问题。对于分类问题,支持向量机算法根据区域中的样本计算该区域的决策曲面,由此确定该区域中未知样本的类别。4.1.5集成学习分类模型集成学习是一种机器学习范式,它试图通过连续调用单个的学习算法,获得不同的基学习器,然后根据规则组合这些学习器来解决同一个问题,可以显著的提高学习系统的泛化能力。主要采用(加权)投票的方法组合多个基学习器,常见的算法有装袋(Bagging)、提升/推进(Boosting)、随机森林等。集成学习由于采用了投票平均的方法组合多个分类器,所以有可能减少单个分类器的误差,获得对问题空间模型更加准确的表示,从而提高分类器的分类准确度。4.1.6其他分类学习模型此外还有logistics回归模型、隐马尔科夫分类模型(HMM)、基于规则的分类模型等众多的分类模型,对于处理不同的数据、分析不同的问题,各种模型都有自己的特性和优势。4.2无监督学习模型4.2.1K-means聚类4.2.2基于密度的聚类4.2.3层次聚类方法4.2.4谱聚类4.2无监督学习模型在非监督式学习中,数据并不被特别标识,学习模型是为了推断出数据的一些内在结构,应用场景包括关联规则的学习以及聚类等。常见的聚类算法如下所示:4.2.1K-means聚类K-means算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后按平均法重新计算各个簇的质心,从而确定新的簇心。一直迭代,直到簇心的移动距离小于某个给定的值。4.2.2基于密度的聚类根据密度完成对象的聚类。它根据对象周围的密度(如DBSCAN)不断增长聚类。典型的基于密度方法包括:DBSCAN(Densit-basedSpatialClusteringofApplicationwithNoise):该算法通过不断生长足够高密度区域来进行聚类;它能从含有噪声的空间数据库中发现任意形状的聚类。此方法将一个聚类定义为一组“密度连接”的点集。OPTICS(OrderingPointsToIdentifytheClusteringStructure):并不明确产生一个聚类,而是为自动交互的聚类分析计算出一个增强聚类顺序。4.2.3层次聚类方法层次聚类方法对给定的数据集进行层次的分解,直到某种条件满足为止。层次凝聚的代表是AGNES算法,层次分裂的代表是DIANA算法。具体又可分为凝聚的,分裂的两种方案。凝聚的层次聚类是一种自底向上的策略,首先将每个对象作为一个簇,然后合并这些原子簇为越来越大的簇,直到所有的对象都在一个簇中,或者某个终结条件被满足,绝大多数层次聚类方法属于这一类,它们只是在簇间相似度的定义上有所不同。分裂的层次聚类与凝聚的层次聚类相反,采用自顶向下的策略,它首先将所有对象置于同一个簇中,然后逐渐细分为越来越小的簇,直到每个对象自成一簇,或者达到了某个终止条件。4.2.4谱聚类谱聚类(SpectralClustering,SC)是一种基于图论的聚类方法——将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见的聚类的目的。其中的最优是指最优目标函数不同,可以是割边最小分割,也可以是分割规模差不多且割边最小的分割。谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是利用样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后得到的特征向量进行聚类。此外常用的聚类方法还有基于网格的聚类、模糊聚类算法、自组织神经网络SOM、基于统计学的聚类算法(COBWeb、AutoClass)等。4.3半监督学习4.3.1半监督学习概述4.3.2Multi-viewalgorithm(多视角算法)4.3.3Graph-BasedAlgorithms(基于图的算法)4.3半监督学习4.3.1半监督学习概述半监督学习算法要求输入数据部分被标识,部分没有被标识,这种学习模型可以用来进行预测,但是模型首先需要学习数据的内在结构以便合理的组织数据来进行预测。应用场景包括分类和回归,算法包括一些对常用监督式学习算法的延伸,这些算法首先试图对未标识数据进行建模,在此基础上再对标识的数据进行预测。如图论推理算法(GraphInference)或者拉普拉斯支持向量机(LaplacianSVM.)等。4.3.2Multi-viewalgorithm(多视角算法)一般多用于可以进行自然特征分裂的数据集中.考虑特殊情况(每个数据点表征两个特征):每一个数据点看成是两个特征的集合,然后利用协同训练(Co-trainingalgorithm)进行处理.协同训练(co-training)算法,此类算法隐含地利用了聚类假设或流形假设,它们使用两个或多个学习器,在学习过程中,这些学习器挑选若干个置信度高的未标记示例进行相互标记,从而使得模型得以更新。4.3.3Graph-BasedAlgorithms(基于图的算法)基于图的算法是基于图正则化框架的半监督学习算法,此类算法直接或间接地利用了流形假设,它们通常先根据训练例及某种相似度度量建立一个图,图中结点对应了(有标记或未标记)示例,边为示例间的相似度,然后,定义所需优化的目标函数并使用决策函数在图上的光滑性作为正则化项来求取最优模型参数。4.4文本处理模型4.4.1分词模型

4.4.2TF-IDF模型

4.4.3LDA模型4.4文本处理模型4.4.1分词模型分词模型主要在处理文本过程中使用,在此特指中文分词模型。中文分词算法现在一般分为三类:基于字符串匹配,基于理解,基于统计的分词。基于字符串匹配分词:机械分词算法。将待分的字符串与一个充分大的机器词典中的词条进行匹配。分为正向匹配和逆向匹配;最大长度匹配和最小长度匹配;单纯分词和分词与标注过程相结合的一体化方法。所以常用的有:正向最大匹配,逆向最大匹配,最少切分法。实际应用中,将机械分词作为初分手段,利用语言信息提高切分准确率。优先识别具有明显特征的词,以这些词为断点,将原字符串分为较小字符串再机械匹配,以减少匹配错误率;或将分词与词类标注结合。基于理解分词:分词同时进行句法语义分析等模拟人对句子的理解,包括分词子系统,句法语义系统,总控部分。总控部分协调下,分词字系统可以获得有关词,句子等的句法和语义信息对分词歧义进行判断。需要大量的语言知识信息。基于统计分词:相邻的字同时出现的次数越多,越有可能构成一个词语,对语料中的字组频度进行统计,不需要切词字典,但错误率很高。可以考虑:使用基本词典进行关键词分词,使用统计方法识别新词组,两者结合。4.4.2TF-IDF模型TF-IDF(termfrequency–inversedocumentfrequency)是一种用于资讯检索与资讯探勘的常用加权技术。TF-IDF是一种统计方法,用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。字词的重要性随着它在文件中出现的次数成正比增加,但同时会随着它在语料库中出现的频率成反比下降。TF-IDF加权的各种形式常被搜寻引擎应用,作为文件与用户查询之间相关程度的度量或评级。除了TF-IDF以外,因特网上的搜寻引擎还会使用基于连结分析的评级方法,以确定文件在搜寻结果中出现的顺序。4.4.3LDA模型LDA(LatentDirichletAllocation)是一种文档主题生成模型,也称为一个三层贝叶斯概率模型,包含词、主题和文档三层结构。所谓生成模型,就是说,我们认为一篇文章的每个词都是通过“以一定概率选择了某个主题,并从这个主题中以一定概率选择某个词语”这样一个过程得到。文档到主题服从多项式分布,主题到词服从多项式分布。LDA是一种非监督机器学习技术,可以用来识别大规模文档集(documentcollection)或语料库(corpus)中潜藏的主题信息。它采用了词袋(bagofwords)的方法,这种方法将每一篇文档视为一个词频向量,从而将文本信息转化为了易于建模的数字信息。但是词袋方法没有考虑词与词之间的顺序,这简化了问题的复杂性,同时也为模型的改进提供了契机。每一篇文档代表了一些主题所构成的一个概率分布,而每一个主题又代表了很多单词所构成的一个概率分布。4.5强化学习4.5.1强化学习概述

4.5.2基本模型和原理4.5.3网络模型设计4.5强化学习4.5.1强化学习概述强化学习(ReinforcementLearning,RL),又称再励学习、评价学习或增强学习,是机器学习的范式和方法论之一,用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题。强化学习的常见模型是标准的马尔可夫决策过程(MarkovDecisionProcess,MDP)。按给定条件,强化学习可分为基于模式的强化学习(model-basedRL)和无模式强化学习(model-freeRL),以及主动强化学习(activeRL)和被动强化学习(passiveRL)。强化学习的变体包括逆向强化学习、阶层强化学习和部分可观测系统的强化学习。求解强化学习问题所使用的算法可分为策略搜索算法和值函数(valuefunction)算法两类。深度学习模型可以在强化学习中得到使用,形成深度强化学习。强化学习理论受到行为主义心理学启发,侧重在线学习并试图在探索-利用(exploration-exploitation)间保持平衡。不同于监督学习和非监督学习,强化学习不要求预先给定任何数据,而是通过接收环境对动作的奖励(反馈)获得学习信息并更新模型参数。强化学习问题在信息论、博弈论、自动控制等领域有得到讨论,被用于解释有限理性条件下的平衡态、设计推荐系统和机器人交互系统。一些复杂的强化学习算法在一定程度上具备解决复杂问题的通用智能,可以在围棋和电子游戏中达到人类水平。4.5.2基本模型和原理强化学习是从动物学习、参数扰动自适应控制等理论发展而来,其基本原理是:如果Agent的某个行为策略导致环境正的奖赏(强化信号),那么Agent以后产生这个行为策略的趋势便会加强。Agent的目标是在每个离散状态发现最优策略以使期望的折扣奖赏和最大。强化学习把学习看作试探评价过程,Agent选择一个动作用于环境,环境接受该动作后状态发生变化,同时产生一个强化信号(奖或惩)反馈给Agent,Agent根据强化信号和环境当前状态再选择下一个动作,选择的原则是使受到正强化(奖)的概率增大。选择的动作不仅影响立即强化值,而且影响环境下一时刻的状态及最终的强化值。强化学习不同于连接主义学习中的监督学习,主要表现在强化信号上,强化学习中由环境提供的强化信号是Agent对所产生动作的好坏作一种评价(通常为标量信号),而不是告诉Agent如何去产生正确的动作。由于外部环境提供了很少的信息,Agent必须靠自身的经历进行学习。通过这种方式,Agent在行动一一评价的环境中获得知识,改进行动方案以适应环境。强化学习系统学习的目标是动态地调整参数,以达到强化信号最大。若已知r/A梯度信息,则可直接可以使用监督学习算法。因为强化信号r与Agent产生的动作A没有明确的函数形式描述,所以梯度信息r/A无法得到。因此,在强化学习系统中,需要某种随机单元,使用这种随机单元,Agent在可能动作空间中进行搜索并发现正确的动作。4.5.3网络模型设计每一个自主体是由两个神经网络模块组成,即行动网络和评估网络。行动网络是根据当前的状态而决定下一个时刻施加到环境上去的最好动作。对于行动网络,强化学习算法允许它的输出结点进行随机搜索,有了来自评估网络的内部强化信号后,行动网络的输出结点即可有效地完成随机搜索并且大大地提高选择好的动作的可能性,同时可以在线训练整个行动网络。用一个辅助网络来为环境建模,评估网络根据当前的状态和模拟环境用于预测标量值的外部强化信号,这样它可单步和多步预报当前由行动网络施加到环境上的动作强化信号,可以提前向动作网络提供有关将候选动作的强化信号,以及更多的奖惩信息(内部强化信号),以减少不确定性并提高学习速度。进化强化学习对评估网络使用时序差分预测方法TD和反向传播BP算法进行学习,而对行动网络进行遗传操作,使用内部强化信号作为行动网络的适应度函数。网络运算分成两个部分,即前向信号计算和遗传强化计算。在前向信号计算时,对评估网络采用时序差分预测方法,由评估网络对环境建模,可以进行外部强化信号的多步预测,评估网络提供更有效的内部强化信号给行动网络,使它产生更恰当的行动,内部强化信号使行动网络、评估网络在每一步都可以进行学习,而不必等待外部强化信号的到来,从而大大地加速了两个网络的学习。4.6深度学习4.6.1概要介绍

4.6.2深度学习的特点4.6.3深度学习的典型模型

4.6.4深度学习的训练过程

4.6.5深度学习的常见应用4.6深度学习深度学习(DL,DeepLearning)是机器学习(ML,MachineLearning)领域中一个新的研究方向,它被引入机器学习使其更接近于最初的目标——人工智能(AI,ArtificialIntelligence)。深度学习是学习样本数据的内在规律和表示层次,这些学习过程中获得的信息对诸如文字,图像和声音等数据的解释有很大的帮助。它的最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。深度学习是一个复杂的机器学习算法,在语音和图像识别方面取得的效果,远远超过先前相关技术。深度学习在搜索技术,数据挖掘,机器学习,机器翻译,自然语言处理,多媒体学习,语音,推荐和个性化技术,以及其他相关领域都取得了很多成果。深度学习使机器模仿视听和思考等人类的活动,解决了很多复杂的模式识别难题,使得人工智能相关技术取得了很大进步。由于当年AlphaGo的优异表现,引起了人们对人工智能的更高期望,AlphaGo不仅带火了深度学习、机器学习,也带火了人工智能,以至于普遍认为人工智能的第三次热潮的热点就在深度学习和机器学习中。这里不得不提的是三者的关系是由小到大的包含关系,即深度学习包含在机器学习中,机器学习包含在人工智能中。虽然概念如此,但是很多场合经常把三者或者其中二者混为一谈,其原因就在于最热的热点就在深度学习上。4.6.1概要介绍深度学习是一类模式分析方法的统称,就具体研究内容而言,主要涉及三类方法:(1)基于卷积运算的神经网络系统,即卷积神经网络(CNN)。(2)基于多层神经元的自编码神经网络,包括自编码(Autoencoder)以及近年来受到广泛关注的稀疏编码两类(SparseCoding)。(3)以多层自编码神经网络的方式进行预训练,进而结合鉴别信息进一步优化神经网络权值的深度置信网络(DBN)。通过多层处理,逐渐将初始的“低层”特征表示转化为“高层”特征表示后,用“简单模型”即可完成复杂的分类等学习任务。由此可将深度学习理解为进行“特征学习”(FeatureLearning)或“表示学习”(RepresentationLearning)。以往在机器学习用于现实任务时,描述样本的特征通常需由人类专家来设计,这成为“特征工程”(FeatureEngineering)。众所周知,特征的好坏对泛化性能有至关重要的影响,人类专家设计出好特征也并非易事;特征学习(表征学习)则通过机器学习技术自身来产生好特征,这使机器学习向“全自动数据分析”又前进了一步。近年来,研究人员也逐渐将这几类方法结合起来,如对原本是以有监督学习为基础的卷积神经网络结合自编码神经网络进行无监督的预训练,进而利用鉴别信息微调网络参数形成的卷积深度置信网络。与传统的学习方法相比,深度学习方法预设了更多的模型参数,因此模型训练难度更大,根据统计学习的一般规律知道,模型参数越多,需要参与训练的数据量也越大。深度学习是机器学习的一种,而机器学习是实现人工智能的必经路径。深度学习的概念源于人工神经网络的研究,含多个隐藏层的多层感知器就是一种深度学习结构。深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示。研究深度学习的动机在于建立模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据,例如图像,声音和文本等。4.6.2深度学习的特点区别于传统的浅层学习,深度学习的不同在于:强调了模型结构的深度,通常有5层、6层,甚至10多层的隐层节点;明确了特征学习的重要性。也就是说,通过逐层特征变换,将样本在原空间的特征表示变换到一个新特征空间,从而使分类或预测更容易。与人工规则构造特征的方法相比,利用大数据来学习特征,更能够刻画数据丰富的内在信息。通过设计建立适量的神经元计算节点和多层运算层次结构,选择合适的输入层和输出层,通过网络的学习和调优,建立起从输入到输出的函数关系,虽然不能100%找到输入与输出的函数关系,但是可以尽可能的逼近现实的关联关系。使用训练成功的网络模型,就可以实现我们对复杂事务处理的自动化要求。4.6.3深度学习的典型模型典型的深度学习模型有卷积神经网络(ConvolutionalNeuralNetwork)、DBN和堆栈自编码网络(StackedAuto-EncoderNetwork)模型等。1、卷积神经网络模型在无监督预训练出现之前,训练深度神经网络通常非常困难,而其中一个特例是卷积神经网络。卷积神经网络受视觉系统的结构启发而产生。第一个卷积神经网络计算模型是在Fukushima的神经认知机中提出的,基于神经元之间的局部连接和分层组织图像转换,将有相同参数的神经元应用于前一层神经网络的不同位置,得到一种平移不变神经网络结构形式。后来,LeCun等人在该思想的基础上,用误差梯度设计并训练卷积神经网络,在一些模式识别任务上得到优越的性能。至今,基于卷积神经网络的模式识别系统是最好的实现系统之一,尤其在手写体字符识别任务上表现出非凡的性能。2、深度信任网络模型DBN可以解释为贝叶斯概率生成模型,由多层随机隐变量组成,上面的两层具有无向对称连接,下面的层得到来自上一层的自顶向下的有向连接,最底层单元的状态为可见输入数据向量。DBN由若2F结构单元堆栈组成,结构单元通常为RBM(RestrictedBoltzmannMachine,受限玻尔兹曼机)。堆栈中每个RBM单元的可视层神经元数量等于前一RBM单元的隐层神经元数量。根据深度学习机制,采用输入样例训练第一层RBM单元,并利用其输出训练第二层RBM模型,将RBM模型进行堆栈通过增加层来改善模型性能。在无监督预训练过程中,DBN编码输入到顶层RBM后,解码顶层的状态到最底层的单元,实现输入的重构。RBM作为DBN的结构单元,与每一层DBN共享参数。3、堆栈自编码网络模型堆栈自编码网络的结构与DBN类似,由若干结构单元堆栈组成,不同之处在于其结构单元为自编码模型(auto-en-coder)而不是RBM。自编码模型是一个两层的神经网络,第一层称为编码层,第二层称为解码层。4.6.4深度学习的训练过程2006年,Hinton提出了在非监督数据上建立多层神经网络的一个有效方法,具体分为两步:首先逐层构建单层神经元,这样每次都是训练一个单层网络;当所有层训练完后,使用Wake-Sleep算法进行调优。将除最顶层的其他层间的权重变为双向的,这样最顶层仍然是一个单层神经网络,而其他层则变为了图模型。向上的权重用于“认知”,向下的权重用于“生成”。然后使用Wake-Sleep算法调整所有的权重。让认知和生成达成一致,也就是保证生成的最顶层表示能够尽可能正确的复原底层的节点。比如顶层的一个节点表示人脸,那么所有人脸的图像应该激活这个节点,并且这个结果向下生成的图像应该能够表现为一个大概的人脸图像。Wake-Sleep算法分为醒(wake)和睡(sleep)两个部分。wake阶段:认知过程,通过外界的特征和向上的权重产生每一层的抽象表示,并且使用梯度下降修改层间的下行权重。sleep阶段:生成过程,通过顶层表示和向下权重,生成底层的状态,同时修改层间向上的权重。1、自下上升的非监督学习2、自顶向下的监督学习4.6.5深度学习的常见应用1、计算机视觉2、语音识别3、自然语言处理等其他领域2020年,深度学习可以加速半导体封测创新。在降低重复性人工、提高良率、管控精度和效率、降低检测成本方面,AI深度学习驱动的AOI具有广阔的市场前景,但驾驭起来并不简单。2020年4月13日,英国《自然·机器智能》杂志发表的一项医学与人工智能(AI)研究中,瑞士科学家介绍了一种人工智能系统可以几秒之内扫描心血管血流。这个深度学习模型有望让临床医师在患者接受核磁共振扫描的同时,实时观察血流变化,从而优化诊断工作流。4.7模型评价指标4.7.1模型评价概述4.7.2常用的模型评价方法4.7.1模型评价概述建模构建过程中会得出一系列的分析结果、模式或模型。同一个采样数据可以利用多种数据分析方法和模型进行分析,模型评价的目的之一就是从这些模型中自动找出一个最好的模型出来,另外就是要针对业务对模型进行解释和应用。模型效果评价通常分两步,第一步是直接使用原来建立模型的样本数据来进行检验。假如这一步都通不过,那么所建立的决策支持信息价值就不太大了。一般来说,在这一步应得到较好的评价。这说明你确实从这批数据样本中挖掘出了符合实际的规律性。第一步通过后,第二步是另外找一批数据,已知这些数据是反映客观实际的、规律性的。这次的检验效果可能会比前一种差,差多少是要注意的,若是差到所不能容忍程度,那就要考虑第一步构建的样本数据是否具有充分的代表性,或是模型本身是否够完善。这时候可能要对前面的工作进行反思了。若这一步也得到了肯定的结果时,那所建立的数据挖掘模型应得到很好的评价了。4.7.2常用的模型评价方法1.预测准确率2.召回率3.综合指标F值4.ROC曲线5.数据相似度6.其他的模型评价方法4.8人工神经网络4.8.1人工神经网络概述4.8.2网络模型

4.8.3人工神经网络的应用分析

4.8.4多层神经网络

4.8.5激活函数

4.8.6卷积神经网络

4.8.7循环神经网络4.8人工神经网络人工神经网络(ArtificialNeuralNetwork,即ANN),是20世纪80年代以来人工智能领域兴起的研究热点。它从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络。在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(ActivationFunction)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。最近十多年来,人工神经网络的研究工作不断深入,已经取得了很大的进展,其在模式识别、智能机器人、自动控制、预测估计、生物、医学、经济等领域已成功地解决了许多现代计算机难以解决的实际问题,表现出了良好的智能特性。4.8.1人工神经网络概述人工神经网络(ArtificialNeuralNetworks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型(ConnectionistModel),是对人脑或自然神经网络(NaturalNeuralNetwork)若干基本特性的抽象和模拟。人工神经网络以对大脑的生理研究成果为基础的,其目的在于模拟大脑的某些机理与机制,实现某个方面的功能。国际著名的神经网络研究专家,第一家神经计算机公司的创立者与领导人HechtNielsen给人工神经网络下的定义就是:“人工神经网络是由人工建立的以有向图为拓扑结构的动态系统,它通过对连续或断续的输入作状态相应而进行信息处理。”这一定义是恰当的。人工神经网络的研究,可以追溯到1957年Rosenblatt提出的感知器模型(Perceptron)。它几乎与人工智能——AI(ArtificialIntelligence)同时起步,但30余年来却并未取得人工智能那样巨大的成功,中间经历了一段长时间的萧条。直到80年代,获得了关于人工神经网络切实可行的算法,以及以VonNeumann体系为依托的传统算法在知识处理方面日益显露出其力不从心后,人们才重新对人工神经网络发生了兴趣,导致神经网络的复兴。目前在神经网络研究方法上已形成多个流派,最富有成果的研究工作包括:多层网络BP算法,Hopfield网络模型,自适应共振理论,自组织特征映射理论等。人工神经网络是在现代神经科学的基础上提出来的。它虽然反映了人脑功能的基本特征,但远不是自然神经网络的逼真描写,而只是它的某种简化抽象和模拟。人工神经网络的以下几个突出的优点使它近年来引起人们的极大关注:可以充分逼近任意复杂的非线性关系;所有定量或定性的信息都等势分布贮存于网络内的各神经元,故有很强的鲁棒性和容错性;采用并行分布处理方法,使得快速进行大量运算成为可能;可学习和自适应不知道或不确定的系统;能够同时处理定量、定性知识。人工神经网络的特点和优越性,主要表现在三个方面:第一,具有自学习功能。例如实现图像识别时,只在先把许多不同的图像样板和对应的应识别的结果输入人工神经网络,网络就会通过自学习功能,慢慢学会识别类似的图像。自学习功能对于预测有特别重要的意义。预期未来的人工神经网络计算机将为人类提供经济预测、市场预测、效益预测,其应用前途是很远大的。第二,具有联想存储功能。用人工神经网络的反馈网络就可以实现这种联想。第三,具有高速寻找优化解的能力。寻找一个复杂问题的优化解,往往需要很大的计算量,利用一个针对某问题而设计的反馈型人工神经网络,发挥计算机的高速运算能力,可能很快找到优化解。4.8.2网络模型人工神经网络模型主要考虑网络连接的拓扑结构、神经元的特征、学习规则等。目前,已有近40种神经网络模型,其中有反传网络、感知器、自组织映射、Hopfield网络、波耳兹曼机、适应谐振理论等。根据连接的拓扑结构,神经网络模型可以分为:1.前向网络网络中各个神经元接受前一级的输入,并输出到下一级,网络中没有反馈,可以用一个有向无环路图表示。这种网络实现信号从输入空间到输出空间的变换,它的信息处理能力来自于简单非线性函数的多次复合。网络结构简单,易于实现。反传网络是一种典型的前向网络。2.反馈网络网络内神经元间有反馈,可以用一个无向的完备图表示。这种神经网络的信息处理是状态的变换,可以用动力学系统理论处理。系统的稳定性与联想记忆功能有密切关系。Hopfield网络、波耳兹曼机均属于这种类型。4.8.3人工神经网络的应用分析神经网络近来越来越受到人们的关注,因为它为解决大复杂度问题提供了一种相对来说比较有效的简单方法。神经网络可以很容易解决具有上百个参数的问题(当然实际生物体中存在的神经网络要比我们这里所说的程序模拟的神经网络要复杂得多)。神经网络常用于两类问题:分类和回归。在结构上,可以把一个神经网络划分为输入层、输出层和隐含层。输入层的每个节点对应一个个的预测变量。输出层的节点对应目标变量,可有多个。在输入层和输出层之间是隐含层(对神经网络使用者来说不可见),隐含层的层数和每层节点的个数决定了神经网络的复杂度。在使用神经网络时有几点需要注意:第一,神经网络很难解释,目前还没有能对神经网络做出显而易见解释的方法学。第二,神经网络会学习过度,在训练神经网络时一定要恰当地使用一些能严格衡量神经网络的方法,如前面提到的测试集方法和交叉验证法等。这主要是由于神经网络太灵活、可变参数太多,如果给足够的时间,他几乎可以“记住”任何事情。第三,除非问题非常简单,训练一个神经网络可能需要相当可观的时间才能完成。当然,一旦神经网络建立好了,在用它做预测时运行时还是很快的。第四,建立神经网络需要做的数据准备工作量很大。一个很有误导性的神话就是不管用什么数据神经网络都能很好的工作并做出准确的预测。这是不确切的,要想得到准确度高的模型必须认真地进行数据清洗、整理、转换、选择等工作,对任何数据挖掘技术都是这样,神经网络尤其注重这一点。比如神经网络要求所有的输入变量都必须是0-1(或-1——+1)之间的实数,因此像“地区”之类文本数据必须先做必要的处理之后才能用作神经网络的输入。4.8.4多层神经网络多层神经网络就是由单层神经网络进行叠加之后得到的,所以就形成了层的概念,常见的多层神经网络有如下结构:1.输入层(Inputlayer),众多神经元(Neuron)接受大量非线性输入消息。输入的消息称为输入向量。2.输出层(Outputlayer),消息在神经元链接中传输、分析、权衡,形成输出结果。输出的消息称为输出向量。3.隐藏层(Hiddenlayer),简称“隐层”,是输入层和输出层之间众多神经元和链接组成的各个层面。隐层可以有一层或多层。隐层的节点(神经元)数目不定,但数目越多神经网络的非线性越显著,从而神经网络的强健性(robustness)更显著。4.全连接层,当前一层和前一层每个神经元相互链接,所谓的全连接层就是在前一层的基础上进行一次Y=Wx+b的变化(不考虑激活函数)。4.8.5激活函数不管是单层还是多层神经网络,都只能线性地划分数据,此时,我们如果在感知机的基础上加上非线性激活函数,输出的结果就不再是一条直线上了。激活函数可以增加模型的非线性分割能力。激活函数的作用除了前面说的增加模型的非线性分割能力外,还有:提高模型鲁棒性、缓解梯度消失问题、加速模型收敛等。4.8.6卷积神经网络卷积神经网络(ConvolutionalNeuralNetworks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络(FeedforwardNeuralNetworks),是深度学习(DeepLearning)的代表算法之一。卷积神经网络具有表征学习(RepresentationLearning)能力,能够按其阶层结构对输入信息进行平移不变分类(Shift-InvariantClassification),因此也被称为“平移不变人工神经网络(Shift-InvariantArtificialNeuralNetworks,SIANN)”。4.8.7循环神经网络循环神经网络(RecurrentNeuralNetwork,RNN)是一类以序列(Sequence)数据为输入,在序列的演进方向进行递归(Recursion)且所有节点(循环单元)按链式连接的递归神经网络(RecursiveNeuralNetwork)。对循环神经网络的研究始于二十世纪80-90年代,并在二十一世纪初发展为深度学习(DeepLearning)算法之一,其中双向循环神经网络(BidirectionalRNN,Bi-RNN)和长短期记忆网络(LongShort-TermMemorynetworks,LSTM)是常见的循环神经网络。循环神经网络具有记忆性、参数共享并且图灵完备(Turingcompleteness),因此在对序列的非线性特征进行学习时具有一定优势。循环神经网络在自然语言处理(NaturalLanguageProcessing,NLP),例如语音识别、语言建模、机器翻译等领域有应用,也被用于各类时间序列预报。引入了卷积神经网络(ConvolutionalNeuralNetwork,CNN)构筑的循环神经网络可以处理包含序列输入的计算机视觉问题。4.9人工智能程序的构建过程4.9.1数据处理4.9.2模型设计4.9.3训练优化4.9.4评估验证

4.9.5测试调整4.9.6部署实施4.9人工智能程序的构建过程人工智能作为当下最热门的行业之一,主要原因就是社会上各行各业对人工智能的需求越来越大。这里从六个方面概述一下人工智能项目的研发流程。4.9.1数据处理人工智能项目研发的首要阶段就是数据处理,既然是数据处理,那么需要有数据才能处理。数据作为人工智能项目的首要材料之一,是不可或缺的,怎么获得良好的数据,是处理好数据的第一步,没有质量保证的数据,无论如何处理,也很难达到数据处理结果的要求。数据的要求一般是根据项目最终的要求而定的,比如拿图像视觉方向的项目来说,模型所需要的当然就是图像数据了,那么什么样的图像数据才算是比较好的数据,有利于模型的学习呢?一般来说图像数据对于现实物体的还原度越高越好,一般可以从图像的色彩三要素和图像像素的值来判断。4.9.2模型设计如果数据是材料,那么模型就是容器,好的材料配上好的丹炉,才有产出好的丹药的可能。模型的发展是深度学习技术发展中较为重要的一环,无论是早期的卷积神经网络模型LeNet,还是后来的AlexNet,以及后面陆续出现的VggNet、GoogLeNet、SqueezeNet、ResNet、DenseNet、DarkNet、MobileNet、ShuffleNet、EfficientNet,又或者是这两年异军突起的Transformer模型,以及CNN和Transformer的结合体,都有一个共同特点,那就是这些模型的发展都朝着一个共同的目标前进,这个目标就是更高的mAp值、更高的训练效率、更快的推理速度、更大的平台适应性。4.9.3训练优化模型训练是最考验算法工程师的实战经验的,比如选择什么样的主干模型,进行怎么样的微调,以及选择什么样的损失函数和优化方法,是否进行多阶段训练,或者对图像数据进行多尺度训练等。此外还包括进行多大batch的采样,如何提高训练的速度,而这些都和具体的设备类型相关。4.9.4评估验证模型评估是和模型训练伴随而行的,可以说训练一开始,评估也随之开始。训练和评估如同部队上的司令员和政委,一个负责攻城略地,一个负责监督指导。对比模型训练和模型评估,两者的关系也是如此。模型训练只负责如何把模型训练好,至于要训练到什么程度才算合适,需要模型评估说了算。所以在开始一项任务的时候,模型训练和模型评估是同时进行的,正常情况下,模型训练一次,则评估一次,但是我们认为模型训练的前几次是不需要评估的,因为模型训练的前期,参数还没有学习到正确的数值。4.9.5测试调整模型测试是项目交付前的最后一次试验,测试的目的就是和项目方给出的指标做对比,比如精度、速度等指标。所以作为项目交付前的最后一次测试实验,一定要按照项目方提出的指标要求做测试,测试的数据最好是从项目方实际的工作场景中采集,如果条件不允许,那么测试数据一定要最大可能的接近项目方实际工作场景的数据,只有这样才有可能在项目交付后不会出现算法指标上的问题。测试数据不仅从质量上要接近真实场景的数据,而且在数量上也要达到一定的量级,测试的结果才会更加接近真实场景下的结果。根据大数定律,在试验不变的条件下,重复试验多次,随机事件的频率近似于它的概率。偶然中包含着某种必然。所以当数据的数量达到一定的量级,也就意味着测试的结果也会越多,最终所有测试结果的期望也就越接近真实结果。4.9.6部署实施模型部署是模型在实际项目中的落地应用,模型部署包括了各种不同的编程语言的部署,比如常见的C/C++、JAVA、Python,以及其他语言,各种语言由于其自身的特性,在部署的时候部署方法也不大一样,比如按照某些定义而言,C/C++属于编译型语言,Python属于解释型语言,总之两者的程序执行过程的差异导致它们在部署的时候要考虑跨平台性的问题。从部署的设备上来说,大概可以分为PC端(个人电脑)、Server端(服务器)、Mobil端(移动设置:iOS,Android)、IoT端(传感器、板卡:Android),各种部署的方法也是大同小异,拿英伟达的JetSonnano系列来说,部署方法非常简单,只要你买回来按照上面的说明部署,基本都能够成功的部署上的。本章练习一、名词解释1、有监督学习2、自学习、自组织与自适应性二、简答题1、人工神经元网络的特点?2、简述神经网络的基本特征?第五章NumPy:如何生成和处理数据请在此输入您的副标题汇报人:代用名目录5.1NumPy的安装5.2NumPy入门5.3NumPy数组操作相关函数介绍5.4NumPy数学函数5.5NumPy数据分类案例引言:Python语言尽管并不是专门为科学计算而设计,系统自带的库函数很难直接完成复杂数值计算,但通过使用第三方的模块便可扩展所需的功能。Python的第三方模块NumPy(/)就是使用最为广泛的科学计算模块,它提供大量的数学函数库,支持大量的数组与矩阵计算,以及微积分相关运算等。NumPy是Python中进行科学计算所必备的基础软件库。以Pandas和Scikit-Learn为首,很多第三方软件库都是基于NumPy实现的。此外,还有一些模仿其函数接口的软件库,无论是进行哪个领域的开发工作,掌握NumPy的运用方法都非常必要。本章主要介绍NumPy的安装及使用,尤其是数据生成与处理相关的操作,最后以一个数据分类的案例作为结尾。5.1NumPy的安装NumPy是NumericalPython的简称,是Python中专门用于数值计算的软件库,其特点是可以实现高性能的数值计算。NumPy中最常用的类是被称为ndarray的用于操作多维数组的类。NumPy数组在其官方文档中大多简称为数组。通过导入NumPy,可以在Python中实现高性能的数据运算处理。对于这个特殊的NumPy类型ndarray,在刚开始接触时难免会有不习惯其中的概念。开始,可以讲ndarray类理解为统一类型的数据的容器就可以了。使用pip命令就可以实现对NumPy的安装操作。命令如下:pipinstallnumpy也可以指定安装版本,以安装1.14.3为例,命令如下:pipinstallnumpy==1.14.3这里,Python各种环境的管理,使用Anaconda会比较方便,可以在电脑中先安装配置好Anaconda,然后使用conda相关命令进行虚拟环境设置。conda相关命令可以帮助各种版本的Python虚拟环境。5.2NumPy入门5.2.1数值计算5.2.2效率对比5.2.3数组和矩阵计算5.2.1数值计算首先,需要导入NumPy库才能使用NumPy。一般将NumPy导入为np模块。在使用前,先写入如下语句:importnumpyasnp以下案例创建NumPy数组,并进行简单的运算。【例5.1】创建NumPy数组并进行简单运算示例。5.1.2效率对比使用NumPy可以进行高性能计算,究竟运算速度能达到多快呢?接下来,我们通过与普通Python代码的执行速度进行对比来弄清楚这个问题。【例5.2】时间对比示例。5.1.3数组和矩阵计算通过属性访问对象的信息并不会导致数组的内容发生变化。例如:使用.T属性显示转置矩阵并不会导致原有数据发生变化。【例5.3】多维数据结构ndarray的基础应用示例。5.3NumPy数组操作相关函数介绍在NumPy的API文档中,有相关函数的详细介绍,表5.2罗列了常用的函数。【例5.4】数组操作示例。5.4NumPy数学函数5.4.1NumPy数学函数基础5.4.2NumPy统计函数5.4.3NumPy向量和矩阵函数5.4.1NumPy数学函数基础NumPy是以数值计算为设计目的的软件库,因此对许多数学函数都提供了实现代码。使用这些函数既可以方便代码编写,又容易维护,只不过需要了解相关函数。5.4.2NumPy统计函数5.4.3NumPy向量和矩阵函数5.5NumPy数据分类案例5.5.1数据集的准备5.5.2训练数据和测试数据的划分5.5.3分类器实现5.5.4数据可视化5.5NumPy数据分类案例本节将使用NumPy构建一个可以对鸢尾花(Iris)的品种进行自动分类的模型。这个鸢尾花数据集在机器学习的研究和实践中经常被用到,其中包含萼片的长度和宽度,花瓣的长度和宽度2种不同种类的鸢尾花(Irissetona、Irisversicolor、Irisvirginica)的数据,每种花包含50组样本数据。其中数据的测量单位为厘米。接下来,将使用这个数据集中的Irissetona和Irisversicolor两种花的数据进行分类处理。5.5.1数据集的准备首先,从相关网站中下载包含鸢尾花数据集的文件。网址为:/ml/machine-learning-databases/iris/iris.data。接下来安装Pandas库,Pandas将在第六章详细介绍,这里提前先使用一下,对数据进行整理时需要用到,经常用于NumPy数值处理的开始阶段。5.5.2训练数据和测试数据的划分接下来,将上面的数据划分为训练用数据和用于确认学习是否成功的测试用数据。由于两种花的样本数据各有50组,因此将其中的40组作为训练用数据,将剩余的10组作为测试用数据。判断学习是否成功的方法是对10组测试用数据的分类精度进行评估。在监督学习中通过将数据划分为训练用数据和测试用数据,就可以对模型是否对训练用数据进行了过度的学习而导致过拟合问题的出现进行确认。如果模型出现了过拟合现象,那么虽然模型对于训练用数据集可以产生非常好的分类结果,但是对于测试用数据集则可能会出现非常明显的分类效果下降的问题。接下来绘制散点图对数据进行可视化。5.5.3分类器实现1、线性分类器2、自适应线性神经元分类器5.5.4数据可视化数据可视化可以使用Matplotlib进行绘图,关于使用Matplotlib库绘图将在第七章详细叙述,这里仅仅绘制散点图、折线图、分类器的决策区域。本章练习一、编程题1、执⾏x=np.array([[1,2],[3,4]],dtype=np.float64),y=np.array([[5,6],[7,8]],dtype=np.float64),然后输出x+y和np.add(x,y)2、利⽤1题⽬中的x,求值最⼤的下标(提⽰(1)print(np.argmax(x)),(2)print(np.argmax(x,axis=0))(3)print(np.argmax(x),axis=1))3、画图,y=x*x其中x=np.arange(0,100,0.1)(提⽰这⾥⽤到matplotlibMatplotlib.pyplot库)4、画图。画正弦函数和余弦函数,x=np.arange(0,3*np.pi,0.1)(提⽰:这⾥⽤到np.sin()np.cos()函数和matplotlib.pyplot库)第六章Pandas:分析数据请在此输入您的副标题汇报人:代用名目录6.1Pandas6.2Series6.3DataFrame6.4基于BankMarketing数据集的营销活动分析引言:Pandas库主要是用于数据处理与分析的,本章主要介绍Pandas库的安装与使用,特别是对于一维数据Series和二维数据DataFrame的操作。本章最后使用BankMarketing数据集,进行营销活动分析。6.1Pandas6.1.1Pandas的由来Pandas的名字来源于Pandas最早发布时的三种数据结构Panel、DataFrame、Series。Pandas已经成为数据分析的基本工具,可以广泛处理各种数据。Pandas的官网(/)有相关详细介绍。目前Pandas主要提供了两种数据结构:·Series:用于处理一维表数据。·DataFrame:用于处理二维表数据。DataFrame由Series组成,它的每一列数据都是Series对象。PandasSeries类似表格中的一个列(column),类似于一维数组,可以保存任何数据类型。DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值、字符串、布尔型值)。DataFrame既有行索引也有列索引,它可以被看做由Series组成的字典(共同用一个索引)。6.1.2安装Pandas库PyCharm中运行程序,报错,提示“ModuleNotFoundError:Nomodulenamed'pandas'”。出现以上错误,表示未安装Pandas库,如果需要使用,必须先安装Pandas库。6.2Series6.2.1创建Series对象6.2.2Series属性6.2.3Series常用方法

6.2.4Series对象数据绘图6.2.1创建Series对象Series是一个类似于一维数组的数据结构,它能够保存任何类型的数据,比如整数、字符串、浮点数等,主要由一组数据和与之相关的索引两部分构成。【例6.1】创建Series对象示例。6.2.2Series属性Series提供了属性信息描述其基本结构与特征。【例6.2】Series属性示例。6.2.3Series常用方法Series常用方法。【例6.3】Series常用方法示例。6.2.4Series对象数据绘图Pandas对绘图库Matplotlib进行了封装,对Series对象数据进行绘图步骤极其简单,由于Matplotlib为下一章的内容,这里仅做简要介绍。【例6.4】Series对象可视化示例。6.3DataFrame

6.3.1DataFrame概念6.3.2创建DataFrame对象

6.3.3DataFrame属性

6.3.4DataFrame索引和切片

6.3.5DataFrame数据分析

6.3.6DataFrame对象可视化6.3.1DataFrame概念DataFrame是Pandas的重要数据结构之一,也是在使用Pandas进行数据分析过程中最常用的结构之一,可以这么说,掌握了DataFrame的用法,就拥有了学习数据分析的基本能力。DataFrame一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字符串、整型或者浮点型等。下面对DataFrame数据结构的特点做简单地总结,如下所示:·DataFrame每一列的标签值允许使用不同的数据类型;·DataFrame是表格型的数据结构,具有行和列;·DataFrame中的每个数据值都可以被修改。·DataFrame结构的行数、列数允许增加或者删除;·DataFrame有两个方向的标签轴,分别是行标签和列标签;·DataFrame可以对行和列执行算术运算。6.3.2创建DataFrame对象【例6.5】创建DataFrame对象示例。6.3.3DataFrame属性DataFrame的属性和方法,与Series相差无几。【例6.6】DataFrame属性示例。6.3.4DataFrame索引和切片DataFrame数据对象,可以通过index和columns指定索引名称,此外,还有一些常见的数据切片函数。【例6.7】DataFrame索引和切片操作示例。6.3.5DataFrame数据分析使用DataFrame进行数据处理的目的是为了分析数据,本节对rz.xlsx文件中的数据进行了简单的统计分析。【例6.8】DataFrame数据分析示例。6.3.6DataFrame对象可视化Pandas对绘图库Matplotlib进行了封装,对DataFrame对象数据进行绘图步骤极其简单,由于Matplotlib为下一章的内容,这里仍然仅做一点介绍。【例6.9】DataFrame对象可视化示例。6.4基于BankMarketing数据集的营销活动分析6.4.1数据集概述和数据结构6.4.2数据的基本信息6.4.3客户数据分析6.4.4营销活动数据分析

6.4.5完整代码及运行结果下面将使用加利福尼亚大学尔湾分校的MachineLearningRepository公布的BankMarketingDataSet执行基本的数据分析任务。本数据集中收录了一家葡萄牙银行对4万多现有客户进行电营销获得的相关数据,在此基础上,对营销活动进行分析,并将结果可视化展示。6.4.1数据集概述和数据结构本数据集大致包含与4个项目相关的值。第一项是与电话营销对象,即银行现有客户的相关数据。第二项是向每位客户进行电话营销中与最后联系时间的相关数据。第三项是其他信息,其中包含电话营销活动中对各目标客户的联系次数或电话营销活动的结果等的数据。第四项与电话营销本身的数据不同,其中包含每月消费者物价指数或欧洲银行间交易利率表示社会和经济背景的数据。除了上述4项电话营销相关的数据,还包含了针对每位客户的电话营销结果的值。本数据集中的电话营销活动是指银行鼓励现有客户开设定期账户的活动。表示结果的变量中保存了成功和失败的值。数据集的URL地址为:/ml/machine-learning-databases/00222/bank-additional.zip。压缩包中的文件bank-additional-full.csv收录了电话营销活动的现有41188位目标客户的数据。其中收录了客户的年龄和职业等个人信息,以及电话营销活动的最后联系时间约21列数据。列y包含了活动的结果。6.4.2数据的基本信息虽然文件bank-additional-full.csv中包含了约21列数据,但是本项目中使用Pandas只对其中12列数据进行基本的数据分析。6.4.3客户数据分析使用Series对象的value_counts方法可以查看客户相关数据的统计信息。6.4.4营销活动数据分析每位客户的联系方式以字符串的形式保存在了列contact中。使用value_counts方法对列contact值的频率进行确认。6.4.5完整代码及运行结果【例6.10】数据分析示例——基于BankMarketing数据集。本章练习一、编程题1、从列表创建Series。2、从NumPy数组创建DataFrame。3、编写⼀个全数值DatraFrame,每个数字减去该⾏的平均数。第七章Matplotlib:数据可视化请在此输入您的副标题汇报人:代用名目录7.1Matplotlib基础7.2常见绘图属性7.3基本绘图7.4事件响应与处理7.5使用NumPy、Pandas、Matplotlib进行电影数据分析与可视化引言:之前我们做了数据的分析,本章对数据分析的结果进行可视化。所谓的可视化,其实就是以图表的形式,形象的展示数据统计结果,常言道:一图胜千言。说到Python的数据可视化,第一个能够联想到的应该就是Matplotlib库了。使用它可以方便的在窗体程序中绘制各种图形。7.1Matplotlib基础Matplotlib是Python中最受欢迎的数据可视化软件包之一,支持跨平台运行,它是Python常用的2D绘图库,同时它也提供了一部分3D绘图接口。Matplotlib通常与NumPy、Pandas一起使用,是数据分析中不可或缺的重要工具之一。图表为更好地探索、分析数据提供了一种直观的方法,它对最终分析结果的展示具有重要的作用。数据可视化是一个新兴名词,它表示用图表的形式对数据进行展示。当您对一个数据集进行分析时,如果使用数据可视化的方式,那么您会很容易地确定数据集的分类模式、缺失数据、离群值等等。Matplotlib生成的图形主要由以下几个部分构成:·Figure:指整个图形,您可以把它理解成一张画布,它包括了所有的元素,比如标题、轴线等;·Axes:绘制2D图像的实际区域,也称为轴域区,或者绘图区;·Axis:指坐标系中的垂直轴与水平轴,包含轴的长度大小(图中轴长为7)、轴标签(指x轴,y轴)和刻度标签;·Artist:您在画布上看到的所有元素都属于Artist对象,比如文本对象(title、xlabel、ylabel)、Line2D对象(用于绘制2D图像)等。使用Python包管理器pip来安装Matplotlib是一种最轻量级的方式。打开CMD命令提示符窗口,并输入以下命令:pipinstallmatplotlibMatplotlib中的pyplot模块是一个类似命令风格的函数集合,这使得Matplotlib的工作模式和MATLAB相似。pyplot模块提供了可以用来绘图的各种函数,比如创建一个画布,在画布中创建一个绘图区域,或是在绘图区域添加一些线、标签等。表7.1对这些函数做了简单地介绍。表7.2对Figure函数做了简单地介绍。7.2常见绘图属性7.2.1编写Matplotlib程序7.2.2绘图参数7.2.3Matplotlib字体

7.2.4绘图其他设置7.2.1编写Matplotlib程序在绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画布才能开始绘图。【例7.1】Matplotlib的第一个程序。7.2.2绘图参数对于上面的fig.add_subplot(111)就是添加Axes的,参数的解释的在画板的第1行第1列的第一个位置生成一个Axes对象来准备作画。也可以通过fig.add_subplot(2,2,1)的方式生成Axes,前面两个参数确定了面板的划分,例如2,2会将整个面板划分成2*2的方格,第三个参数取值范围是[1,2*2]表示第几个Axes。在使用Matplotlib作图时,会遇到图片显示不全或者图片大小不是我们想要的,这个时候就需要调整画布大小。7.2.3Matplotlib字体Matplotlib默认不支持中文字体,只支持ASCII字符,但中文标注更加符合中国人的阅读习惯。当直接使用中文时,Matplotlib绘制的图像会出现中文乱码。通过临时重写配置文件的方法,可以解决Matplotlib显示中文乱码的问题。Matplotlib中的文本字符串都可以使用Latex格式显现出来,具体的使用方法是将文本标记符放在一对美元符号$内。在pyplot模块中,与调整子图布局的函数主要为subplots_adjust和tight_layout,其中subplots_adjust是修改子图间距的通用函数,tight_layout默认执行一种固定的间距配置,也可以自定义间距配置,底层原理类似于subplots_adjust函数。7.2.4绘图其他设置使用savefig()函数可将图片保存在指定目录下,在show()前插入,如果在show()后面会出现保存图片为空白现象。绘图过程如果我们想要给坐标自定义一些不一样的标记,就可以使用plot()方法的marker参数来定义。fmt参数定义了基本格式,如标记、线条样式和颜色。7.3基本绘图7.3.1折线图7.3.2散点图7.3.3双轴图7.3.4条形图

7.3.5直方图

7.3.6饼图

7.3.7箱型图7.3.8泡泡图7.3.9等高线图

7.3.103D曲线图7.3.113D散点图7.3.123D等高线图

7.3.133D线框图

7.3.143D曲线图

7.3.1折线图【例7.2】折线图示例。plot()函数画出一系列的点,并且用线将它们连接起来。7.3.2散点图【例7.3】散点图示例。只画点,不用线连接起来。7.

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论