Python工程应用-数据分析基础与实践课件-第2章_第1页
Python工程应用-数据分析基础与实践课件-第2章_第2页
Python工程应用-数据分析基础与实践课件-第2章_第3页
Python工程应用-数据分析基础与实践课件-第2章_第4页
Python工程应用-数据分析基础与实践课件-第2章_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

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

文档简介

第一章概论西华大学机器学习第二章Python机器学习基础库XXX学校XXX2022目录ContentsNumpyPandasMatplotlibScipyScikit-LearnTensorFlow

本章知识图谱3

Numpy一1Numpy库5Numpy(NumericPython)库是Python当中一个开源的数值计算扩展库,它可用来存储和处理大型矩阵,比Python自身的嵌套列表(nestedliststructure)结构要高效得多(该结构也可以用来表示矩阵(matrix))。Numpy和稀疏矩阵运算包Scipy配合使用更加方便。Numpy提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库,多用于严格的数字处理,在很多大型金融公司业务中广泛使用,一些核心的科学计算组织(如:LawrenceLivermore,NASA等)用其处理一些本来使用C++,Fortran或Matlab等完成的任务。1.1Numpy库的安装6Numpy库在Windows下可以通过下面的步骤进行安装:

启动Anaconda下面的“AnacondaPrompt”或系统的“cmd”命令窗口,输入如下命令即可完成安装:pipinstallnumpy1.2Numpy库的导入7

首先,在使用Numpy库之前,我们需要使用import语句引入该模块,代码如下所示:importnumpyasnp#导入numpy模块并命名为np,方便后面调用

或者:fromnumpyimport*1.2Numpy库的导入8import语句和from…import语句的区别:import…语句:直接导入一个模块,同一模块不管执行多少次,import都只会被导入一次。from…import…语句:导入一个模块中的一个函数。import引入模块之后,如果需要使用模块里的函数方法,则需要加上模块的限定名字,而from…import语句则不用加模块的限定名字,直接使用其函数方法即可。1.3创建数组9a=np.array([1,2,3,4])#创建一维数组b=np.array([5,6,7,8])c=np.array([1,2,3,4],[5,6,7,8],[7,8,9,10])#创建二维数组

创建一维数组和二维数组的代码:

数组的大小可以通过其shape属性获得,例:a.shapeb.shapec.shape1.3创建数组10c.shape=(4,3)修改数组的shape属性的代码:创建一个改变尺寸的新数组,原数组保持不变,代码如下:d=a.reshape((2,2))a[1]=10修改数组中指定位置的元素的代码:1.4查询数组类型11

数组的元素类型可以通过dtype属性获得,实现代码如下:

通过dtype参数在创建数组的时候指定元素类型,实现代码如下:e=np.array([[1,2,3,4],[4,5,6,7],[7,8,9,10]],dtype=np.float)

a.dtype1.5查询数组类型121.arange()函数类似于Python的range()函数,通过指定开始值、终值和步长来创建一维数组(注意数组不包括终值),实现代码如下:f=np.arrange(0,1,0.1)2.linspace()函数通过指定开始值、终值和元素个数来创建一维数组(等差数列),可以通过endpoint关键字指定是否包括终值(默认设置包括终值),实现代码如下:g=np.linsspace(0,1,12)1.5查询数组类型133.logspace()函数和linspace()类似,但是它创建的是等比数列,实现代码如下:h=np.logspace(0,2,10)1.6数组元素的存取14

数组元素的存取方法和Python标准方法相同,代码如下:a=np.arange(10)以下代码可以实现对数组中部分连续元素的存取:a[3:5]1.7ufunc运算15ufunc是universalfunction的缩写,是一种能对ndarray的每个元素进行操作的函数。它支持数组广播、类型转换和其他一些标准功能。也就是说,ufunc是函数的“矢量化”包装器,它接受固定数量的特定输入并生成固定数量的特定输出。NumPy内置的许多ufunc函数是在C语言级别实现的,因此它们的计算速度非常快。比如numpy.sin()的速度就比Python自带的math.sin()的速度要快得多。1.8矩阵的运算16a=np.matrix(‘12;34’)b=a.T#返回矩阵a的转置矩阵并存储于bc=a.I#返回矩阵a的逆矩阵并存储于c

Numpy库提供了matrix类,使用matrix类创建的是矩阵对象,它们的加、减、乘、除运算默认采用矩阵方式,因此其用法和Matlab十分相似。具体使用方法如下:1.8矩阵的运算17a=np.zeros(5,),dtype=#使用zero方法创建0矩阵

b=np.empty#使用empty方法创建一个2行4列任意数据的矩阵c=np.array([1,2,3],[4,5,6])#使用array方法创建换一个2行3列指定数据的矩阵d=np.dot(b,c)#使用dot函数实现交叉运算

由于Numpy中同时存在ndarray和matrix对象,读者很容易混淆,一般情况下,不推荐在较复杂的程序中使用matix,通常可以通过ndarray对数组进行各种操作来实现矩阵运算。下面是一些创建特殊矩阵的代码示例:

Pandas二2Pandas库的安装19Pandas是Python的一个数据分析包,最初是由AQRCapitalManagement于2008年4月开发的,目前由专注于Python数据包开发的PyData开发团队继续开发和维护,属于PyData项目的一个部分。Pandas的名称来自面板数据和Python数据分析。Pandas引入了大量库和一些标准的数据模型,提供了高效的操作大型数据集所需要的工具。Pandas也提供了大量可以快速便捷处理数据的函数和方法,是Python成为强大而高效的数据分析工具的重要因素之一。Pandas的基本数据结构是Series和DataFrame。其中Series称为序列,用于产生一个一维数组,DataFrame用于产生二维数组,它的每一列都是一个Series。2.1Pandas库的安装20

在Windows下,Pandas库可以通过启动Anaconda下的“AnacondaPrompt”或系统的“cmd”命令窗口,输入如下命令完成安装:pipinstallpandas2.2Pandas库的导入21使用Pandas库,首先需要使用import语句引入该模块,代码如下:importpandasaspd或者:frompandasimport*2.3Series22

Series是一维标记数组,可以存储任意数据类型,如整型、字符串、浮点型和Python对象等,轴的标签称为索引(index)。

frompandasimportSeries,DataFrame#通过传递一个list对象来创建Series,默认创建整型索引

a=Series([1,2,3,4])print("创建Series:\n",a)#创建一个用索引来决定每一个数据点的Seriesb=Series([1,2,3,4],index=['a','b','c','d’])print("创建带有索引的Series:\n",b)#如果有一些数据在一个Python字典中,可以通过传递字典来创建一个Seriessdata={'Tom':123456,"John":12654,"Cindy":123445}

2.4DataFrame23DataFrame是二维标记数据结构,其列可以是不同的数据类型,它是最常用的Pandas对象,像Series一样可以接收多种输入(lists、dicts、series和DataFrame等)。

#DataFrame的简单实例代码如下:frompandasimportSeries,DataFrame

#创建一个空的DataFramedf=DataFrame(columns={"a":"","b":"","c":""},index=[0])

a=[['2','1.2','4.2'],['0','10','0.3'],['1','5','0’]]print(df)#使用list的数据创建DataFramedf=DataFrame(a,columns=['one','two','three’]) print(df)

Matplotlip三3Matplotlip库Matplotlib是Python的一个绘图库,是Python中最常用的可视化工具之一,可以非常方便地创建2D图表和3D图表。通过Matplotlib,开发者可能仅需要几行代码,便可以生成各种图表,如直方图、条形图、散点图等。它提供了一整套和Matlab相似的命令API,十分适合交互式制图。也可以方便地将Matplotlib作为绘图控件,嵌入GUI应用程序中。3.1Matplotlip安装

在Windows下,Matplotlib库可以通过启动Anaconda下的“AnacondaPrompt”或系统的“cmd”命令窗口,输入如下命令完成安装:pipinstallmatplotlip3.2Matplotlip库的导入27使用Matplotlib库之前需要先使用import语句引入该模块,代码如下:importmatplotlipaspd或者:frommatplotlipimport*3.3基本绘图plot命令Matplotlib库中,最常使用的命令就是plot,常用的绘图方法实现代码如下:importmatplotlib.pyplotaspltimportnumpyasnp #导入numpy模块方便后续使用numpy模块中的函数

x=np.linspace(0,-2*np.pi,100) #使用linspace函数创建等差数列y=np.sin(x) plt.figure(1)plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2) #指定绘制函数的图像plt.xlabel("Time(s)") #设置x坐标名称plt.ylabel("Volt") #设置y坐标名称plt.title("FirstExample") #设置图像标题plt.ylim(-1.2,1.2) #y坐标表示范围plt.legend() #设置图例plt.show() #图像展示3.3基本绘图plot命令3.3基本绘图plot命令参数说明如下:(1)label:给所绘制的曲线标定一个名称,此名称在图示(lengend)中显示,只要在字符串前添加“$”,Matplotlib就会使用其内嵌的latex引擎绘制数学公式。(2)color:指定曲线的颜色。(3)linewidth:指定曲线的宽度。(4)xlabel:设置X轴的文字。(5)ylabel:设置Y轴的文字。(6)title:设置图表标题。(7)ylim:设置Y轴的范围,格式为[y的起点,y的终点]。(8)xlim:设置X轴的范围,格式为[x的起点,x的终点]。(9)legend:显示label中标记的图示。3.3基本绘图plot命令关于plot函数颜色参数说明如下:颜色标记颜色标记蓝色b绿色G红色r黄色Y青色c黑色K洋红色m白色W3.3基本绘图plot命令关于plot函数线型参数取值说明如下:参数描述参数描述‘-’实线‘-’或者’:’虚线‘-.’点画线‘none’或者’’不画3.4绘制多窗口图形一个绘制对象(figure)可以包含多个轴(axis),在Matplotlib中用轴表示一个绘图区域,可以将其理解为子图。可以使用subplot函数快速绘制有多轴的图表。实现代码如下:importmatplotlib.pyplotasplt #导入matplotlib模块绘制多窗口图形plt.subplot(1,2,1) #绘制多轴图例第一幅图plt.plot(x,y,color="red",linewidth=2) #传入参数,设置颜色和线条宽度plt.xlabel("Time(s)") #设置x轴名称plt.ylabel("Volt") #设置y轴名称plt.title("FirstExample") #设置标题plt.ylim(-1.2,1.2) #设置表示范围plt.axis([-8,0,-1.2,1.2])plt.legend()3.4绘制多窗口图形plt.subplot(1,2,2) #绘制多轴图例的第二幅图plt.plot(x,y,"b--")plt.xlabel("Time(s)")plt.ylabel("Volt")plt.title("SecondExample")plt.ylim(-1.2,1.2)plt.legend()plt.show()3.4绘制多窗口图形3.5文本注释在数据可视化的过程中,可以通过annotate()方法在图片中使用文字注释图中的一些特征,在使用annotate时,要考虑两个点的坐标:被注释的地方,使用坐标xy=(x,y)给出;插入文本的地方,使用坐标xytext=(x,y)给出,实现代码如下所示:importnumpyasnp #导入numpy模块importmatplotlib.pyplotasplt #导入matplotlib模块x=np.arange(0.0,5.0,0.01) #使用numpy模块中的arange函数生成数字序列y=np.cos(2*np.pi*x)plt.plot(x,y) #绘制图形plt.annotate('localmax',xy=(2,1),xytext=(3,1.5)) #使用annotate函数对图形进行注释arrowprops=dict(facecolor="black",shrink=0.05)plt.ylim(-2,2)plt.show()3.5文本注释在写代码过程中,如果发现输入中文时存在无法正常显示,这通常是因为缺少中文字体库造成的,只需要手动添加中文字体即可解决该问题,实现代码如下所示:importmatplotlib.pyplotasplt #导入matplotlib模块plt.figure(1) #绘制图像plt.plot(x,y,label="$sin(x)$",color="red",linewidth=2)plt.xlabel("时间(秒)") plt.ylabel("电压")plt.title("正弦波")plt.ylim(-1.2,1.2)plt.legend()plt.show()mpl.rcParams['font.sans-serif']=['SimHei'] #系统字体,显示中文plt.rcParams['axes.unicode_minus']=False3.5文本注释Scipy四4.1ScipyScipy是一个用于数学、科学及工程方面的常用软件包,Scipy包含科学计算中常见问题的各个工具箱。Scipy函数库在NumPy库的基础上增加了许多的数学、科学及工程计算中常用的库函数,如线性代数、常微分方程数值求解、信号处理、图像处理、稀疏矩阵等。它通过有效地计算NumPy矩阵,来让NumPy和Scipy协同工作。4.1ScipypipinstallscipyScipy库在Windows下可以通过下面的步骤进行安装:

启动Anaconda下面的“AnacondaPrompt”或系统的“cmd”命令窗口,输入如下命令即可完成安装:4.2Scipy库的导入42使用Scipy库之前需要先使用import语句引入该模块,代码如下:importscipyaspd或者:fromscipyimport*4.3最小二乘法

4.3最小二乘法4.3最小二乘法4.3非线性方程求解46Scipy的optimize库中的fsolve函数可以用来对非线性方程组进行求解,它的基本调用形式:fsolve(func,x_0),其中func(x)是计算方程组的函数,它的参数x是一个矢量,表示方程组的各个未知数的一组可能解,func(x)返回x带入方程组之后得到的结果,x_0为未知数矢量的初始值。4.3非线性方程求解47Scikit-Learn五5Scikit-Learn49Scikit-learn项目最早由数据科学家DavidCournapeau在2007年发起,需要NumPy和Scipy等其他包的支持,是Python语言中专门针对机器学习应用而发展起来的一款开源的框架。Scikit-learn的基本功能主要被分为以下几个部分:分类:是指识别给定对象的所述类别,属于监督学习的范畴,最常见的应用场景包括垃圾邮件检测和图像识别等,目前Scikit-learn已经实现的算法包括支持向量机(SVM)、K-近邻、随机森林、决策树及多层感知器(MLP)神经网络等。回归:是指预测与给定对象相关联的连续值属性,最常用的应用场景包括药物反应和预测股票价格等,目前Scikit-learn已经实现的算法包括支持向量回归(SVR)、岭回归、Lasso回归、贝叶斯回归等。5Scikit-Learn50聚类:是指自动识别具有相似属性的给定对象,并将其分组为集合,属于无监督学习的范畴,最常见的应用场景包括顾客细分和实验结果分组。目前Scikit-learn已经实现的算法包括K-均值聚类、均值偏移、分层聚类等。数据降维:是指使用主成分分析(PCA)、非负矩阵分解(NMF)或特征选择等降维技术来减少要考虑的随机变量的个数,其主要应用场景包括可视化处理和效率提升。模型选择:是指对于给定参数和模型的比较、验证和选择,其主要目的是通过参数调整来提升精度,目前Scikit-learn已经实现的算法包括格点搜索、交叉验证和各种针对预测误差评估的度量函数5Scikit-Learn51数据预处理:是指数据的特征提取和归一化,是机器学习过程中的第一个也是最重要的环节。这里归一化是指将输入数据转换为具有零均值和单位权方差的新变量,特征提取是指将文本或图像数据转换为可用机器学习的数字变量。综上所述,作为专门面向机器学习的Python开源框架,Scikit-learn可以在一定范围内为开发者提供非常好的帮助,它内部实现了各种各样成熟的算法,容易安装和使用。5.1Scikit-Learn的安装pipinstallScikit_LearnScikit-Learn库在Windows下的具体安装步骤如下:

启动Anaconda下面的“AnacondaPrompt”或系统的“cmd”命令窗口,输入如下命令即可完成安装:5.2Scikit-Learn的数据集53序号数据集名称主要调用方式数据描述1鸢尾花数据集Load_iris()用于多分类任务的数据集2波士顿房价数据集Load_boston()经典的用于回归任务的数据集3糖尿病数据集Load_diabetes()经典的用于回归任务的数据集4手写数字数据集Load_digits()用于多分类的任务的数据集5乳腺癌数据集Load_breast_cancer()简单经典的用于二分类任务的数据集6体能训练数据集Load_linnerud()经典的用于多变量回归任务的数据集TensorFlow六6TensorFlowTensorFlow是一个深度学习库,由Google开源,可以对定义在Tensor(张量)上的函数自动求导。Tensor意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow即为张量从图的一端流动到另一端。

要正常使用TensorFlow,必须了解两个基本概念:Tensor和Flow,即张量和数据流图.1.张量(Tensor)

张量是一种表示物理量的方式,这个方式就是用基向量与分量组合表示物理量(Combinationofbasisvectorandcomponent)。6TensorFlow标量,0个基向量:0-modetensor向量,1个基向量:1-modetensor矩阵,2个基向量:2-modetensor…张量可以表示为多维数组(atensorcanberepresentedasamultidimensionalarrayofnumbers)6TensorFlow2.数据流图(DataFlowGraphs)

用TensorFlow进行机器学习模型计算的时候,通常包含两个阶段:

第一阶段:“组装”一个计算图(Graph)。这个图就描述了用于机器学

习的模型的结构。如果读者熟悉以前微软的DirectShow开发,就能过很容易的理解,此处的Graph和DirectShow里的FilterGraphs有异曲同工之处。

第二阶段:使用一个Session在图中进行操作。6.1TensorFlow的安装pipinstallTens

温馨提示

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

评论

0/150

提交评论