版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章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,每个数字减去该⾏的平均数。第七章
Scikit-learn:机器学习基础请在此输入您的副标题汇报人:代用名目录7.1机器学习的算法和模型7.2Scikit-learn的功能模块7.3Scikit-learn应用7.4Scikit-learn的快速入门7.5使用Scikit-learn实现线性回归建模引言:Scikit-learn是基于Python语言的机器学习框架,其API设计非常优秀,所有对象的接口简单易用,它提供了数十种内置的机器学习算法和模型,称为评估器,也称为预估器、估计器。每一个模型评估器都可以用它的拟合方法fit()来拟合训练数据,从而构建合适的模型。为了能够深入了解和掌握Scikit-learn,以便能够灵活地运用于实践,本章介绍正确使用Scikit-learn的基础知识。7.1机器学习的算法和模型机器学习是目前人工智能领域中,最为前沿的研究方向之一。作为一门交叉学科,机器学习涉及到统计学、信息论、计算机科学等多个学科领域。其中,算法和模型是机器学习领域最为重要的两个概念。算法是机器学习中表示模型计算过程的一种方法。机器学习算法分为监督学习算法和非监督学习算法两种。监督学习算法以已知标签的示例数据为输入,自动构造出一个从输入到输出的映射函数。常见的监督学习算法有决策树、神经网络、支持向量机等。非监督学习算法则通常将输入数据映射到一个低维度的特征空间,并自动发现数据内部的结构和规律。常见的非监督学习算法有K-Means、PCA等。分类和回归是有监督学习中的主要两类算法问题。总之,机器学习中的算法和模型是机器学习的基础和核心。算法和模型的选择影响到机器学习的准确性和效率,在实践中,我们需要结合实际需求,对输入数据和算法模型进行仔细分析和选择。7.1机器学习的算法和模型7.1.1特征变量和目标变量7.1.2算法训练7.1.3过拟合和欠拟合7.1.4模型性能度量7.1.1特征变量和目标变量特征变量是一个可量化的指标,是所研究对象的一个特征。特征变量也称为自变量,通常以x表示。一个机器学习问题往往需要数十个甚至上百、上千个特征变量作为输入变量,这些特征变量是以样本数据的形式出现在数据集中的。我们经常把一个样本数据称为一个特征向量,通常以X表示。在有监督机器学习问题中,除了特征变量外,还有一个或多个目标变量。从业务角度看,目标变量就是解决问题的目标。在分类问题中,由于目标变量的取值往往是对应类别字符串的取值,是研究对象“标签化”,所以目标变量也称为标签变量,或者直接称为标签;也称为事实变量。通常以y表示单个目标变量,而用Y表示所有的目标变量。另外,由于目标变量的预测值取决于特征变量,所以它也称为依赖变量或因变量,或称为输出变量、响应变量。7.1.2算法训练根据目标变量(通常称为Y变量)的数据类型(定性或定量),我们要建立一个分类(如果Y是定性的)或回归(如果Y是定量的)模型。1、参数调优2、特征选择3、数据集划分4、训练集选择的算法5、交叉验证7.1.3过拟合和欠拟合在训练模型的过程中,我们通常希望达到以下两个目的:1、训练的损失值尽可能地小2、训练的损失值与测试的损失值之间的差距尽可能地小当第一个目的没有达到时,则说明模型没有训练出很好的效果,模型对于判别数据的模式或特征的能力不强,则认为它是欠拟合的。当第一个目的达到,第二个没有达到时,说明模型训练出了很好的效果,而测试的损失值比较大,则说明模型在新的数据上的表现很差,此时可认为模型过度拟合训练的数据,而对于未参与训练的数据不具备很好的判别或拟合能力,这种情况下,模型是过拟合的。7.1.3过拟合和欠拟合过拟合在于将偶然的特征也作为识别身份的标志,而欠拟合在于了解的特征的特征不够多,在机器学习中表示模型的学习能力不够,无法学到足够的数据特征。欠拟合的特点:训练的损失值很大,且测试的损失值也很大。过拟合的特点:训练的损失值足够小,而测试的损失值很大。对于一个足够复杂度或足够参数量的模型或神经网络来说,随着训练的进行,会经历一个“欠拟合-适度拟合-过拟合”的过程。对于一个复杂度不够的模型或参数量太少的神经网络来说,只有欠拟合。7.1.3过拟合和欠拟合根据欠拟合的特点来看,产生欠拟合的主要原因有两个:1、模型的容量或复杂度不够,对神经网络来说是参数量不够或网络太简单,没有很好的特征提取能力。通常为了避免模型过拟合,会添加正则化,当正则化惩罚太过,会导致模型的特征提取能力不足。2、训练数据量太少或训练迭代次数太少,导致模型没有学到足够多的特征。根据欠拟合产生的原因来分析,解决方法有两个:1、换个更复杂的模型,对神经网络来说,换个特征提取能力强或参数量更大的网络。或减少正则化的惩罚力度。2、增加迭代次数或想办法弄到足够的训练数据或想办法从少量数据上学到足够的特征。如适度增大epoch,数据增强,预训练,迁移学习,小样本学习,无监督学习等。7.1.3过拟合和欠拟合根据过拟合的特点来看,过拟合产生的原因有以下四个:1、模型太复杂,对神经网络来说,参数太多或特征提取能力太强,模型学到了一些偶然的特征。2、数据分布太单一,例如训练用的所有鸟类都在笼子里,模型很容易把笼子当成识别鸟的特征。3、数据噪声太大或干扰信息太多,如人脸检测,训练图像的分辨率都是几百乘几百,而人脸只占了几十到几百个像素,此时背景太大,背景信息都属于干扰信息或噪声。4、训练迭代次数太多,对数据反复地训练也会让模型学到偶然的特征。7.1.3过拟合和欠拟合根据过拟合产生的原因来看,解决方法有以下四个:1、换一个复杂度低一点的模型或正则化,对神经网络来说,使用参数量少一点的网络,或使用正则化。2、使用不同分布的数据来训练。如数据增强,预训练等。3、使用图像裁剪等方法对图像进行预处理。4、及时地停止训练。如何判断什么时候该停止训练?使用K折交叉验证,若训练损失还在减少,而验证损失开始增加,则说明开始出现过拟合。7.1.4模型性能度量本节要讲的是有哪些性能度量的指标可以去评估模型的好坏。不同的性能指标会导致不同的评估结果,也就是说模型的好坏是相对的,什么样的模型优秀,不仅取决于算法与数据,还取决于任务需求。在线性预测问题中常⽤“均⽅误差”(meansquareerror)来度量回归模型的性能。下⾯主要介绍分类任务中常⽤的性能指标。1、错误率与精度2、查准率,查全率与F13、ROC与AUC4、代价敏感错误率与代价曲线7.2Scikit-learn的功能模块 7.2.1数据预处理 7.2.2数据降维 7.2.3分类 7.2.4回归 7.2.5聚类 7.2.6模型选择 Scikit-learn是一个功能强大且被广泛使用的Python机器学习框架,其基本功能主要由六大模块组成:分类、回归、聚类、数据降维、模型选择和数据预处理。7.2.1数据预处理 预处理的目标是提取最关心的特征变量(特征抽取)、数据归一化处理等。应用场景:文本数据向量化、数据标准化等。实现算法:相关预处理方法、特征抽取方法等等。7.2.2数据降维降维的目标是减少需要考虑的随机变量的数量。应用场景:可视化、效率提升。实现算法:主成分分析PCA、K-Means聚类、非负矩阵分解(NMF)等等。7.2.3分类分类算法的目标是识别一个研究对象(数据)属于哪个类别。所属类别:有监督学习。应用场景:垃圾邮件检测、模式识别、图像识别、欺诈识别等。实现算法:支持向量机SVM、最邻近分类KNN、随机森林、决策树、逻辑回归等等。7.2.4回归回归算法的目标是预测一个研究对象的某个连续值属性。所属类别:有监督学习。应用场景:药物反应,股价预测,销售预测,网站流量预测等。实现算法:支持向量回归SVR、岭回归、Lasso回归、弹性网络(ElasticNet)等等。7.2.5聚类聚类算法的目标是自动把数据集中相似的数据点进行分组。所属类别:无监督学习。应用场景:客户细分,实验结果分组,文章聚类,异常值检测等。实现算法:K-Means聚类、谱聚类、均值漂移(MeanShift)、层次聚类等等。7.2.6模型选择模型选择的目标是通过比较、验证等方法,选择最佳参数和模型。应用场景:优化参数,提高模型的准确度。实现算法:网格搜索(gridsearch)、交叉验证CV等等。数据预处理是机器学习过程中的第一个步骤,也是至关重要的一个环节。7.2.6模型选择Scikit-learn将所有的评估器和函数功能分为六大类,分别是分类模型(Classification)、回归模型(Regression)、聚类模型(Clustering)、降维方法(Dimensionalityreduction)、模型选择(Modelselection)和数据预处理六大类。六个功能模块的划分其实是存在很多交叉的,对于很多模型来说,既能处理分类问题、同时也能处理回归问题,而很多聚类算法同时也可以作为降维方法实用。例如线性回归对用评估器可从Regression进入进行查找,而对用模型评估指标,由于评估指标最终是指导进行模型选择的,因此模型评估指标计算的实用函数的查找应该从Modelselection入口进入。7.3Scikit-learn应用 7.3.1安装Scikit-learn 7.3.2Scikit-learn库常用模块介绍 7.3.3Scikit-learn库的应用场景 7.3.4示例代码 7.3.5Scikit-learn库的未来发展趋势 7.3.1安装Scikit-learn安装Scikit-learn的最好方式是使用pip工具,具体命令如下:pipinstallScikit-learn#或者pipinstall-UScikit-learn在程序中使用Scikit-learn库之前首先要将其导入。由于大部分常用的模块都位于子模块中,而子模块不会自动导入,所以Scikit-learn库的导入要给出具体的子模块。7.3.2Scikit-learn库常用模块介绍Scikit-learn库包含了大量的相关机器学习模型,下面列举一些常用模块及其个人见解:1.datasets模块2.preprocessing模块3.externals模块4.pipeline模块5.model_selection模块7.3.3Scikit-learn库的应用场景Scikit-learn库是机器学习领域最重要的库之一。它适用于以下领域:1.预测和推荐通过Scikit-learn库我们可以实现一些业务中的预测和推荐的功能,例如房价预测,依据人的身高体重等数据进行足球场地的推荐等。2.对象分类和分组Scikit-learn库的聚类算法和分类算法的使用可以极大地帮助机器识别一定的对象进行分组,并且可以进行一个对于已有数据集分组的识别和推进实践者们处理和管理业务的更多思维。3.图像处理Scikit-learn库中的特征处理、缩放处理和图片压缩等功能也适用于图像处理,让我们能够探索并理解人类视觉模块,在一些人类智能模型的训练中提升准确率。7.3.3Scikit-learn库的应用场景Scikit-learn库是机器学习领域最重要的库之一。它适用于以下领域:1.预测和推荐通过Scikit-learn库我们可以实现一些业务中的预测和推荐的功能,例如房价预测,依据人的身高体重等数据进行足球场地的推荐等。2.对象分类和分组Scikit-learn库的聚类算法和分类算法的使用可以极大地帮助机器识别一定的对象进行分组,并且可以进行一个对于已有数据集分组的识别和推进实践者们处理和管理业务的更多思维。3.图像处理Scikit-learn库中的特征处理、缩放处理和图片压缩等功能也适用于图像处理,让我们能够探索并理解人类视觉模块,在一些人类智能模型的训练中提升准确率。7.3.3Scikit-learn库的应用场景Scikit-learn库是机器学习领域最重要的库之一。它适用于以下领域:1.预测和推荐通过Scikit-learn库我们可以实现一些业务中的预测和推荐的功能,例如房价预测,依据人的身高体重等数据进行足球场地的推荐等。2.对象分类和分组Scikit-learn库的聚类算法和分类算法的使用可以极大地帮助机器识别一定的对象进行分组,并且可以进行一个对于已有数据集分组的识别和推进实践者们处理和管理业务的更多思维。3.图像处理Scikit-learn库中的特征处理、缩放处理和图片压缩等功能也适用于图像处理,让我们能够探索并理解人类视觉模块,在一些人类智能模型的训练中提升准确率。7.3.4示例代码以下代码展示了如何使用Scikit-learn库中的k-means聚类算法将花卉数据集分成不同的类别:```pythonimportnumpyasnpfromsklearn.clusterimportKMeansfromsklearn.datasetsimportload_iris#加载数据集iris=load_iris()X=iris.datay=iris.target#训练聚类模型kmeans=KMeans(n_clusters=3,random_state=0).fit(X)#输出分组结果y_pred=kmeans.predict(X)print(y_pred)```代码实现了数据集加载、模型训练和分组结果输出。在这个例子中,我们将花卉数据集分成了三个不同的类别,其中每个类别中的花卉都具有类似的特征,如花瓣长宽、花萼长宽等等。7.3.5Scikit-learn库的未来发展趋势机器学习因其在商业和科学领域中的成功而蓬勃发展。Scikit-learn作为一种成熟的开源机器学习库,已经在工业和学术研究中广泛应用。为了保持成果的竞争力,Scikit-learn库将需要引入新算法和实现,同时提供更简单、更直观的API来吸引更多的用户和开发人员使用。较近的未来,Scikit-learn库将快速实现传统机器学习算法和新兴算法的深度集成,比如增量学习、自然语言处理、深度学习等。随着深度学习领域的发展和普及,不仅将出现越来越多的Scikit-learn库安装要求,同时也将使这个开源库变得越来越流行,使它成为数据科学和机器工程领域的有力工具。7.3.5Scikit-learn库的未来发展趋势Scikit-learn库是机器学习领域的关键库之一,该库的简洁易用性与功能强大,使其在数据科学领域中受到广泛的认可与使用。Scikit-learn库在文档、工具、功能等方面拥有较高的标准。同时,Scikit-learn库的特性也是非常具有优势的,主要包括为开源社区做出贡献、易于扩展、拥有强大的功能、具备广泛的文档资料等等。值得注意的是,只要具有一定的数据科学和python基础,Scikit-learn库就是开发者的理想选择,因为它提供了最简单的API。即使是对于初学者,他们也可以很容易地理解和学习该库,从而使用其提供的神经网络,贝叶斯分类器,支持向量机等方法熟练地完成数据分析任务。最后,Scikit-learn库将一直在数据科学与机器学习的时代发挥作用。7.4Scikit-learn的快速入门 7.4.1数据集的导入和处理 7.4.2数据集切分 7.4.3数值数据的标准化 7.4.4数值数据的归一化 7.4.5核心对象类型:评估器 7.4.6高级特性-管道 7.4.7模型保存 7.4.1数据集的导入和处理Scikit-learn提供了非常多的内置数据集,并且还提供了一些创建数据集的方法,这些数据集常用于演示各种机器学习算法的使用方法。这些数据集分为两种类型:小规模的玩具数据集(ToyDatasets)和大规模的真实世界数据集(Real-WorldDatasets)。以下是几个常见的玩具数据集:1、Iris(鸢尾花):一个分类问题的数据集,包含了三种鸢尾花的四个特征,目标是根据这些特征预测鸢尾花的种类。2、Digits(手写数字):一个多分类问题的数据集,包含了手写数字的8x8像素图像,目标是识别这些图像对应的数字。3、BostonHousePrices(波士顿房价):这是一个回归问题的数据集,包含了波士顿各个区域的房价和其他13个特征,目标是预测房价。4、BreastCancer(乳腺癌):这是一个二分类问题的数据集,包含了乳腺肿瘤的30个特征,目标是预测肿瘤是良性还是恶性。sklearn中的数据集相关功能都在datasets模块下,可以通过API文档中的datasets模块所包含的内容对所有的数据集和创建数据集的方法进行概览。7.4.2数据集切分在Scikit-learn中,通常将原始数据集切分为训练集和测试集,这样做可以评估模型在未见过的数据上的性能。数据集切分的目的是为了更好的进行模型性能评估,而更好的进行模型性能评估则是为了更好的进行模型挑选,Scikit-learn提供了train_test_split函数来帮助完成这一任务,train_test_split在model_selection模块下。7.4.3数值数据的标准化梯度下降优化(一):数据归一化的理论与实践Scikit-learn中,可以直接调用函数来使用,非常方便简单。Scikit-learn中的预处理模块sklearn.preprocessing提供了许多实用的特征缩放功能,包括数据归一化(Normalization)和标准化(Standardization)。这两种技术都用于改变特征的尺度,以便在训练机器学习模型时保证它们在相同的范围内。此处需要注意一点:从功能上划分,Scikit-learn中的归一化其实是分为标准化(Standardization)和归一化(Normalization)两类。Z-Score标准化和0-1标准化,都属于Standardization的范畴,Normalization则特指针对单个样本(一行数据)利用其范数进行放缩的过程。数据归一化:归一化通常意味着将数据缩放到[0,1]的范围内,或者使得所有数据的范围都在[-1,1]之间。可以使用Scikit-learn的MinMaxScaler来实现。7.4.4数值数据的归一化在Scikit-learn中,preprocessing.normalize是另一种类型的"归一化"。preprocessing.normalize的功能是按照向量空间模型(VectorSpaceModel)对特征向量进行转换,使得每个特征向量的欧几里得长度(L2范数)等于1,或者每个元素的绝对值之和(L1范数)等于1。换句话说:和标准化不同,Scikit-learn中的归一化特指将单个样本(一行数据)放缩为单位范数(1范数或者2范数为单位范数)的过程,该操作常见于核方法或者衡量样本之间相似性的过程中。7.4.5核心对象类型:评估器许多功能强大的第三方库都定义了自己的核心对象类型,这些对象类型实际上都是源码中定义的特定类的实例。例如,NumPy的核心是数组(Array),Pandas的核心是DataFrame,PyTorch的核心则是张量(Tensor)。这些对象类型为数据分析和机器学习提供了强大的工具。对于Scikit-learn来说,它的核心对象类型是评估器(Estimator)。可以将评估器看作是一种封装了各种机器学习模型的工具。在Scikit-learn中进行模型训练的过程,其核心就是围绕着这些评估器展开的。总的来说,这些不同库的核心对象类型都为处理特定任务提供了便捷,使得可以更加专注于问题的解决,而不需要深入底层去处理复杂的细节。"围绕评估器的使用也基本分为两步,其一是实例化该对象,其二则是围绕某数据进行模型训练。7.4.6高级特性-管道在Scikit-learn中,Pipeline是一种方便地将多个步骤组织在一起的工具,常常用于包含多个步骤的数据预处理和建模过程。Pipeline在确保步骤顺序执行,代码整洁,并在进行交叉验证时防止数据泄露方面有很大的优势。Pipeline工作流程类似于生产线,每个步骤都是独立的,但所有的步骤都依次串联起来,上一步的输出作为下一步的输入。一个典型的Pipeline可能包括数据的缩放(如归一化或标准化)、特征选择、降维以及最后的模型训练等步骤。7.4.7模型保存模型保存(modelpersistence)是一种将训练好的机器学习模型保存到磁盘,然后在以后的时间点(可能是在不同的环境中)加载和使用的技术。这是非常有用的,因为通常训练一个好的模型可能需要大量的时间和计算资源。一旦模型被训练,我们可能希望在未来重新使用它,而不是每次需要时都重新训练。在Scikit-learn中,可以使用Python的内置库pickle,或者joblib库(一种特别针对大数据的pickle)来实现模型保存和加载。7.5使用Scikit-learn实现线性回归建模1、准备数据,生成1000个基本规律满足$y=2x_1-x_2+1$分布回归类数据集2、根据函数生成特征和标签数据3、绘制两个子图,观察数据集在不同特征维度上的分布情况4、调用Scikit-learn中的线性回归评估器5、查看模型训练参数6、结果解读7、使用MSE做模型评估本章练习编程题:使用Scikit-learn库,根据协同过滤算进行电影推荐。第八章Matplotlib:数据可视化请在此输入您的副标题汇报人:代用名目录8.1Matplotlib基础8.2常见绘图属性8.3基本绘图8.4事件响应与处理8.5使用NumPy、Pandas、Matplotlib进行电影数据分析与可视化引言:之前我们做了数据的分析,本章对数据分析的结果进行可视化。所谓的可视化,其实就是以图表的形式,形象的展示数据统计结果,常言道:一图胜千言。说到Python的数据可视化,第一个能够联想到的应该就是Matplotlib库了。使用它可以方便的在窗体程序中绘制各种图形。8.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模块提供了可以用来绘图的各种函数,比如创建一个画布,在画布中创建一个绘图区域,或是在绘图区域添加一些线、标签等。表8.1对这些函数做了简单地介绍。表8.2对Figure函数做了简单地介绍。8.2常见绘图属性8.2.1编写Matplotlib程序8.2.2绘图参数8.2.3Matplotlib字体
8.2.4绘图其他设置8.2.1编写Matplotlib程序在绘图之前,我们需要一个Figure对象,可以理解成我们需要一张画布才能开始绘图。【例8.1】Matplotlib的第一个程序。8.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作图时,会遇到图片显示不全或者图片大小不是我们想要的,这个时候就需要调整画布大小。8.2.3Matplotlib字体Matplotlib默认不支持中文字体,只支持ASCII字符,但中文标注更加符合中国人的阅读习惯。当直接使用中文时,Matplotlib绘制的图像会出现中文乱码。通过临时重写配置文件的方法,可以解决Matplotlib显示中文乱码的问题。Matplotlib中的文本字符串都可以使用Latex格式显现出来,具体的使用方法是将文本标记符放在一对美元符号$内。在pyplot模块中,与调整子图布局的函数主要为subplots_adjust和tight_layout,其中subplots_adjust是修改子图间距的通用函数,tight_layout默认执行一种固定的间距配置,也可以自定义间距配置,底层原理类似于subplots_adjust函数。8.2.4绘图其他设置使用savefig()函数可将图片保存在指定目录下,在show()前插入,如果在show()后面会出现保存图片为空白现象。绘图过程如果我们想要给坐标自定义一些不一样的标记,就可以使用plot()方法的marker参数来定义。fmt参数定义了基本格式,如标记、线条样式和颜色。8.3基本绘图8.3.1折线图8.3.2散点图8.3.3双轴图8.3.4条形图
8.3.5直方图
8.3.6饼图
8.3.7箱型图8.3.8泡泡图8.3.9等高线图
8.3.103D曲线图8.3.113D散点图8.3.123D等高线图
8.3.133D线框图
8.3.143D曲线图
8.3.1折线图【例8.2】折线图示例。plot()函数画出一系列的点,并且用线将它们连接起来。8.3.2散点图【例8.3】散点图示例。只画点,不用线连接起来。8.3.3双轴图【案例8.4】双轴图示例。8.3.4条形图【例8.5】条形图示例。8.3.5直方图【例8.6】直方图示例。8.3.6饼图【例8.7】饼图示例。8.3.7箱型图箱型图(也称为盒须图)于1977年由美国著名统计学家约翰·图基(JohnTukey)发明。它能显示出一组数据的最大值、最小值、中位数、及上下四分位数。在箱型图中,我们从上四分位数到下四分位数绘制一个盒子,然后用一条垂直触须(形象地称为“盒须”)穿过盒子的中间。上垂线延伸至上边缘(最大值),下垂线延伸至下边缘(最小值)。首先准备创建箱型图所需数据:可以使用numpy.random.normal()函数来创建一组基于正态分布的随机数据,该函数有三个参数,分别是正态分布的平均值、标准差以及期望值的数量然后用data_to_plot变量指定创建箱型图所需的数据序列,最后用boxplot()函数绘制箱型图。【例8.8】箱型图示例。8.3.8泡泡图泡泡图。散点图的一种,加入了第三个值s可以理解成普通散点,画的是二维,泡泡图体现了Z的大小。【例8.9】泡泡图示例。8.3.9等高线图【例8.10】等高线图示例。等高线图(也称“水平图”)是一种在二维平面上显示3D图像的方法。等高线有时也被称为“Z切片”,如果您想要查看因变量Z与自变量X、Y之间的函数图像变化(即Z=f(X,Y)),那么采用等高线图最为直观。8.3.103D曲线图【例8.11】3D曲线图示例。8.3.113D散点图【例8.12】3D散点图示例。8.3.123D等高线图【例8.13】3D等高线图示例。示例展示了如何绘制三维正弦等高线图。ax.contour3D()可以用来创建三维等高线图,该函数要求输入数据均采用二维网格式的矩阵坐标。同时,它可以在每个网格点(x,y)处计算出一个z值。8.3.133D线框图【例8.14】3D线框图示例。线框图同样要采用二维网格形式的数据,与绘制等高线图类似。8.3.143D曲线图【例8.15】3D曲面图。曲面图表示一个指定的因变量y与两个自变量x和z之间的函数关系。3D曲面图是一个三维图形,它非常类似于线框图。不同之处在于,线框图的每个面都由多边形填充而成。Matplotlib提供的plot_surface()函数可以绘制3D曲面图,该函数需要接受三个参数值x,y和z。8.4事件响应与处理8.4.1事件响应概念8.4.2鼠标单击事件8.4.3Matplotlib常用事件8.4.4鼠标点击画线
8.4.5按钮8.4.6单选按钮8.4.1事件响应概念谈到用户界面交互总少不了事件,前面一系列文章介绍的鼠标光标、坐标、弹出式提示框等实现的底层其实都是事件处理,只不过Matplotlib或其他包做了封装以便于应用。Matplotlib的事件处理模型基于GTK,Matplotlib支持与wxpython、tkinter、qt、gtk等常见GUI后端的交互。Matplotlib的事件绑定有三个要素:·Canvas对象·事件名称·回调函数Matplotlib的事件绑定由canvas对象调用mpl_connect方法实现,mpl_connect方法有两个参数:事件名称、回调函数。即canvas对象.mpl_connect(事件名称,回调函数)。mpl_connect方法又称为事件管理器,它是FigureCanvasBase类的方法。FigureCanvasBase类属于matplotlib.backend_bases模块,作用是隔离绘图和后端底层,这样绘图时就不用考虑各个后端之间的差异。canvas原意画布,figure原意图像,可以这样理解,figure是一切可见绘图元素的集合,而canvas是figure的容器,canvas的事件的响应、处理都是基于canvas的。在本案例中,fig为figure对象,fig的canvas属性可以返回当前图像所在的canvas对象,然后再调用mpl_connect方法,'button_press_event'为鼠标左键单击事件,onclick为回调函数。8.4.2鼠标单击事件【例8.16】显示鼠标单击消息示例。8.4.3Matplotlib常用事件Matplotlib中用到的事件类都继承自Matplotlib.backend_bases.Event。8.4.4鼠标点击画线【例8.17】鼠标点击画线示例。将鼠标点击相邻两点用直线连接,起始点为0,0。8.4.5按钮【例8.18】动态绘制正弦曲线示例。8.4.6单选按钮【例8.19】动态绘制正弦曲线示例。8.5使用NumPy、Pandas、Matplotlib进行电影数据分析与可视化8.5.1获取数据8.5.2电影评分分布图8
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 钽铌精炼工岗前实操知识技能考核试卷含答案
- 2026运动营养与物理防护产品组合营销模式创新报告
- 网络预约出租汽车司机班组建设测试考核试卷含答案
- 海底管道防腐工岗前安全技能考核试卷含答案
- 电子电气产品能效检验员操作评估模拟考核试卷含答案
- 陶瓷颜料制备工创新思维知识考核试卷含答案
- 己内酰胺装置操作工岗前工作技能考核试卷含答案
- 消防设施检测维保员可持续发展测试考核试卷含答案
- 飞机起落架附件装调工安全宣教强化考核试卷含答案
- 扩印洗印设备装配调试工班组评比评优考核试卷含答案
- 中风康复期中医护理常规
- 《整体混凝土地坪技术规程》20250916
- 客房卫生处罚制度
- 细胞培养虚拟仿真实验教学的应用
- 上海健康医学院《大学英语》2023-2024学年第一学期期末试卷
- 2025年研究生思想道德面试题库及答案
- GB/T 39679-2025电梯用智能识别装置
- 2025年初级会计职称《经济法基础》精讲课件第1-4章
- 教师下企业跟岗实践汇报
- 为老年人更换纸尿裤
- 外墙风管安装施工方案
评论
0/150
提交评论