书签 分享 收藏 举报 版权申诉 / 113
上传文档赚钱

类型第九章-Python数据处理与机器学习课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4961588
  • 上传时间:2023-01-28
  • 格式:PPTX
  • 页数:113
  • 大小:1,008.98KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第九章-Python数据处理与机器学习课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    第九 Python 数据处理 机器 学习 课件
    资源描述:

    1、机器学习与大数据技术作者:牟少敏教授第九章p 矩阵计算p 网络爬虫p 数据库p OpenCV图像编程 Python数据处理与机器学习数据处理与机器学习p 数据可视化p 基于Python机器学习算法p 基于Python大数据处理技术p Tensorflow编程创新与贡献研究意义选题背景第九章 本章主要介绍了如何用python进行数据处理和实现机器学习中常用算法的实现。学习目标创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算 矩阵在图像处理和机器学习中应用非常广泛。numpy是Python中关于矩阵运算的库,能够完成矩阵加减乘除、矩阵转置、逆矩阵、行列式、矩阵的幂、伴随矩阵等功能。创新与贡

    2、献研究意义选题背景第九章9.1 矩阵计算矩阵计算9.1.1基础知识1 numpy基础 numpy包含数组和矩阵两种基本的数据类型,有许多创建数组的函数,只有创建数组才能对其进行相关的操作。通过给array函数传递对象来创建数组,首先需要使用import语句导入numpy库。若使用的是import numpy命令,则在创建数组时用a=numpy.array(1,2,3,4)的形式;若导使用的是import numpy as np命令,则在创建数组时用a=np.array(1,2,3,4)。创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算例9-1 使用numpy创建矩阵,然后打印出来,源码

    3、如下。import numpyimport numpy as np test1=np.array(1,2,3,3,4,5)print(test1.shape)print(test1.ndim)#打印数组维数。print(test1.min()#打印最小值print(test1.sum()#打印矩阵所有元素的和print(test10)#矩阵的取值,这里取第一行print(test10,2)#打印第一行的第3个元素 使用array函数创建数组时,参数必须是由方括号括起来的列表,而不能是多个数值。可使用双重序列来表示二维数组,三重序列表示三维数组,以此类推创新与贡献研究意义选题背景第九章9.1 矩

    4、阵计算矩阵计算调用shape方法,可获取矩阵的大小,例如:(4,):shape有一个元素即为一维数组,数组中有4个元素;(3,4):shape有两个元素即为二维数组,数组为3行4列。例9-7 使用sum(axis=1)方法对矩阵进行行求和,源码如下。test1=np.array(5,10,15,20,25,30,35,40,45)test1.sum(axis=1)输出结果:array(30,75,120)例9-8 使用sum(axis=0)方法对矩阵进行列求和,源码如下。test1=np.array(5,10,15,20,25,30,35,40,45)test1.sum(axis=0)#输出a

    5、rray(60,75,90)(2)矩阵行列计算(1)求矩阵大小创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算(3)最值计算(4)矩阵转置 T表示矩阵的转置矩阵,也适用于高维向量。例9-12 求矩阵test转置矩阵,源码如下。test.shape=(6,2)print(test)输出结果:4.8.8.0.6.9.9.2.4.0.0.0.test.T#计算转置输出结果:array(4.,8.,6.,9.,4.,0.,8.,0.,9.,2.,0.,0.)创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算(5)矩阵乘法例9-14 对矩阵a和b进行乘法计算,源码如下。import num

    6、py as npa=np.array(1,2,3,4)b=np.array(5,6,7,8)print(a*b)#对应位置元素相乘print(a.dot(b)#矩阵乘法print(np.dot(a,b)#矩阵乘法#输出 5 12 21 32 19 22 43 50 19 22 43 50 创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算(6)创建矩阵例9-17创建1矩阵,源码如下。np.ones(3,3)#创建3*3的全1矩阵。输出结果:array(1.,1.,1.,1.,1.,1.,1.,1.,1.)例9-16 创建全0矩阵,源码如下。np.zeros(3,3)#创建3行3列的0矩阵

    7、array(0.,0.,0.,0.,0.,0.,0.,0.,0.)np.zeros(3,3),dtype=np.str)#在创建时指定数据类型输出结果:array(,dtype=np.eye(2,dtype=int)输出结果:array(1,0,0,1)a1=1,2,3np.diag(a1)输出结果:array(2,0,0,0,4,0,0,0,6)(7)对角矩阵创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算伴随矩阵的求法:把矩阵的各个元素都换成它相应的代数余子式,将所得到的矩阵转置便得到A的伴随矩阵。例9-21 求矩阵a的逆矩阵,源码如下。a=np.linalg.inv(a)#矩阵a

    8、的逆矩阵b=np.linalg.det(a)#方阵的行列式a*b#伴随矩阵为逆矩阵与方阵行列式的乘积np.linalg.norm(a,ord=None)#计算矩阵a的范数(8)伴随矩阵创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算(9)数组的特征信息 例9-23将矩阵a进行分隔,同列表和数组的分隔一致,源码如下。a=np.mat(np.ones(3,3)matrix(1.,1.,1.,1.,1.,1.,1.,1.,1.)b=a1:,1:/分割出第二行以后的行和第二列以后的列的所有元素matrix(1.,1.,1.,1.)(10)矩阵的分隔和合并(11)索引 numpy中的数组索引形式

    9、和Python是一致的。创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算2矩阵函数(1)扩展矩阵函数tile()tile函数功能是重复某个数组,例如tile(A,n)是将数组A重复n次,构成一个新的数组,函数语法格式如下:tile(A,reps)A是array,list,tuple,dict,matrix以及基本数据类型int,string,float以及bool类型。reps的类型可以是tuple,list,dict,array,int,bool,但不可以是float,string,matrix类型。tile(a,x):x是控制a的重复次数,结果是一个一维数组。tile(a,(x,y

    10、):结果是一个二维矩阵,行数为x,列数是一维数组a的长度和y的乘积。tile(a,(x,y,z):结果是一个三维矩阵,矩阵的行数为x,矩阵的列数为y,而z表示矩阵每个单元格里a重复的次数,三维矩阵可以看成一个二创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算维矩阵,每个矩阵的单元格里存者一个一维矩阵a。(2)range()和arange()函数range函数返回一个列表对象。arange()函数与range()函数类似,但是返回一个array对象,并且arange可以使用float型数据。函数包含三个参数,前两个参数是等差数列的数据范围,第一个参数是等差数列第一个元素,第二个参数是等差

    11、数列最后一个元素,第三个参数是等差数列的公差,例9-27 range()和arange()函数应用实例,源码如下。import numpy as npnp.arange(1,10,0.5)运行结果:array(1.,1.5,2.,2.5,3.,3.5,4.,4.5,5.,5.5,6.,6.5,7.,7.5,8.,8.5,9.,9.5)创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算9.1.2应用举例 numpy.linalg模块包含各种线性代数的函数,可以实现逆矩阵、求特征值、解线性方程组以及行列式等计算。l 计算逆矩阵l 求解线性方程组创新与贡献研究意义选题背景第九章9.1 矩阵计算

    12、矩阵计算1计算逆矩阵 例9-28一个创建矩阵A,使用inv函数计算其逆矩阵,源码如下。A=np.mat(0 1 2;12 3;4 3 3)print(A)输出结果:matrix(0,1,2,1,2,3,4,3,3)matrix(0,1,2,1,2,3,4,3,3)inv=np.linalg.inv(A)print(inv)输出结果:inv=np.linalg.inv(A)print(inv)输出结果:matrix(3.,-3.,1.,-9.,8.,-2.,5.,-4.,1.)检查原矩阵和求得的逆矩阵相乘的结果是否为单位矩阵:print(A*inv)输出结果:1.0.0.0.1.0.0.0.1.

    13、需要注意的是矩阵必须是方阵且可逆,否则会抛出LinAlgError异常。创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算numpy.linalg中的函数solve可以求解形如Ax=b的线性方程组,其中A为矩阵,b为一维或二维的数组,x是未知变量。例9-29 使用solve函数求解线性方程组实例,源码如下。import numpy as np#创建矩阵和数组B=np.mat(1-2 1;0 2-8;-4 5 9)b=np.array(0,8,-9)#调用solve函数求解线性方程x=np.linalg.solve(B,b)print(x)array(29.,16.,3.)#使用dot函数

    14、检查求得的解是否正确print(np.dot(B,x)0.8.-9.2 求解线性方程组创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算特征值即方程Ax=ax的根,其中A是一个二维矩阵,x是一个一维向量。在numpy.linalg模块中,eigvals函数可以计算矩阵的特征值,而eig函数可以返回一个包含特征值和对应的特征向量的元组。例9-30 使用eigvals函数求特征值和特征向量,源码如下。import numpy as np#创建一个矩阵C=np.mat(3-2;1 0)#调用eigvals函数求解特征值c0=np.linalg.eigvals(C)print(c0)array(

    15、2.,1.)使用eig函数可以求解特征值和特征向量,该函数将返回一个元组,按列存放特征值和对应的特征向量,其中第一列为特征值,第二列为特征向量。3 特征值和特征向量创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算 奇异值分解是一种因子分解运算,将一个矩阵分解为3个矩阵的乘积。numpy.linalg模块中的svd函数可以对矩阵进行奇异值分解。该函数返回3个矩阵U、Sigma和V,其中U和V是正交矩阵,Sigma包含输入矩阵的奇异值。例9-32 使用svd函数进行奇异值分解,源码见二维码。#结果包含等式中左右两端的两个正交矩阵U和V,以及中间的奇异值矩阵Sigma。使用diag函数可以生

    16、成完整的奇异值矩阵,将分解出的3个矩阵相乘。print(U*np.diag(Sigma)*V)4.11.14.8.7.-2.4 奇异值分解创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算 使用numpy.linalg模块中的pinv函数进行求解广义逆矩阵,inv函数只接受方阵作为输入矩阵。例9-33 使用pinv函数求解广义逆矩阵,源码如下。import numpy as np#创建一个矩阵E=np.mat(4 11 14;8 7-2)pseudoinv=np.linalg.pinv(E)#使用pinv函数计算广义逆矩阵print(pseudoinv)matrix(-0.0055555

    17、6,0.07222222,0.02222222,0.04444444,0.05555556,-0.05555556)#将原矩阵和得到的广义逆矩阵相乘print(E*pseudoinv)1.00000000e+00 -7.77156117e-16 -1.11022302e-16 1.00000000e+005 广义逆矩阵创新与贡献研究意义选题背景第九章9.1 矩阵计算矩阵计算numpy.linalg模块中的det函数可以计算矩阵的行列式。例9-34 使用det函数对行列式进行计算,源码如下。import numpy as np#计算矩阵的行列式F=np.mat(1 4;1 6)matrix(1,

    18、4,1,6)#使用det函数计算行列式print(np.linalg.det(F)2.06 行列式计算创新与贡献研究意义选题背景第九章9.2 网络爬虫网络爬虫9.2.1基础知识 网络爬虫是按照一定的规则,自动地抓取互联网信息的程序或者脚本。网络爬虫的定义为:利用标准的http 协议,根据超级链接和Web 文档检索的方法遍历万维网信息空间的软件程序。网络爬虫被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面内容,供搜索引擎做进一步处理,使得用户能更快的检索到他们需要的信息。大数据背景下,各行各业都需要数据支持,在浩瀚的数据中获取感兴趣的数据成为了研究热点。在数据搜索方面,

    19、现在的搜索引擎虽然比刚开始有了很大的进步,但对于一些特殊数据搜索或复杂搜索,还不能很好的完成,所得到数据不能满足需求。网络安全,产品调研等研究都需要数据支持,而网络上没有现成的数据,需要自己手动去搜索、分析,格式化为满足需求的数据。利用网络爬虫技术能自动完成数据获取,汇总的工作,大大提升了工作效率。创新与贡献研究意义选题背景第九章9.2 网络爬虫网络爬虫(1)Python语言简洁,简单易学;(2)Python使用方便,不需要笨重的 IDE,只需要一个文本编辑器,就可以进行大部分中小型应用的开发。(3)Python有功能强大的爬虫框架 Scrapy。Scrapy 是一个为了爬 取网站数据,提取结

    20、构性数据而编写的应用框架,可以应用在包括数据挖掘、信息处理或存储历史数据等一系列的程序中。(4)Python有强大的网络支持库以及 html 解析器。使用网络支持库requests,可以方便地下载网页;使用网页解析库 Beautiful Soup,可以方便地解析网页各个标签,再结合正则表达式抓取网页中的内容。(5)Python十分擅长处理文字字符串。包含了常用的文本处理函数,支持正则表达式,可以方便地处理文本内容。使用Python语言编写网络爬虫有很多优点。创新与贡献研究意义选题背景第九章9.2 网络爬虫网络爬虫 从功能上来讲,网络爬虫一般分为数据采集,处理,储存三个部分。爬虫从一个或者多个初

    21、始 URL 开始,下载网页内容,然后通过搜索或是内容匹配手段获取网页中感兴趣的内容,同时不断从当前页面提取新的 URL。程序根据网页抓取策略,按一定的顺序放入待抓取 URL 队列中,整个过程循环执行,直到满足系统相应的停止条件。然后对这些被抓取的数据进行清洗、整理、建立索引,存入数据库或文件中。最后根据查询需要,从数据库或文件中提取相应的数据,以可视化的方式展示出来。在网络爬虫系统中,待抓取 URL 队列是很重要的一部分,待抓取 URL 队列中的 URL以什么样的顺序排列也是十分重要的问题,这涉及到优先抓取哪个页面,再抓取哪个页面。而决定这些URL排列顺序的方法称为做抓取策略,可以分为深度优先

    22、、广度优先和最佳优先三种。创新与贡献研究意义选题背景第九章9.2 网络爬虫网络爬虫(1)广度优先搜索策略。这种策略的主要思想是,由根节点开始,首先遍历当前层次的搜索,然后才进行下一层的搜索,依次类推逐层的搜索。这种策略多用在主题爬虫上,因为越是与初始 URL 距离近的网页,其具有的主题相关性越大。在宽度优先搜索中,先搜索完一个Web页面中所有的超级链接,然后再继续搜索下一层,直到底层为止。例如一个HTML 文件中有3个超级链接,选择其中之一,处理相应的HTML文件,然后不再选择第二个HTML文件中的任何超级链接,而是返回,选择第二个超级链接,处理相应的HTML文件,再返回,选择第三个超级链接,

    23、并处理相应的HTML文件。一旦一层上的所有超级链接都被选择过,就开始在刚才处理过的HIML文件中搜索其余的超级链接。这保证了对浅层的首先处理。当遇到一个无穷尽的深层分支时,不会导致陷进深层文档中无法出来。宽度优先搜索策略能在两个HTML文件之间找到最短路径。创新与贡献研究意义选题背景第九章9.2 网络爬虫网络爬虫(2)深度优先搜索策略。这种策略的主要思想是,从根节点出发找出叶子节点,然后以此类推。在一个网页中选择一个超链接,被链接的网页将执行深度优先搜索,形成单独的一条搜索链,当没有其他超链接时,搜索结束。深度优先搜索是在开发爬虫早期使用较多的方法,它的目的是要达到被搜索结构的叶结点。在一个H

    24、TML文件中,当一个超级链接被选择后,被链接的HTML文件将执行深度优先搜索,即在搜索其余的超级链接结果之前必须先完整地搜索单独的一条链。深度优先搜索沿着HTML文件上的超级链接走到不能再深入为止,然后返回到某一个HTML文件,再继续选择该HTML文件中的其他超级链接。当不再有其他超级链接可选择时,说明搜索已经结束。这种方法优点是能遍历一个Web站点或深层嵌套的文档集合。创新与贡献研究意义选题背景第九章9.2 网络爬虫网络爬虫(3)最佳优先搜索策略。这种策略的主要思想是,聚焦爬虫的爬行策略只跳出某个特定主题的页面,根据“最好优先原则”进行访问,快速地获得更多的与主题相关的页面。主要通过内容与W

    25、eb的链接结构指导进一步的页面抓取。聚焦爬虫会给它所下载的页面一个评价分,根据得分排序插入到一个队列中。最好的下一个搜索对弹出队列中的第一个页面进行分析后执行,这种策略保证爬虫能优先跟踪那些最有可能链接到目标页面的页面。决定网络爬虫搜索策略的关键是如何评价链接价值,不同的价值评价方法计算出的链接的价值不同,表现出的链接的“重要程度”也不同,从而决定了不同的搜索策略。由于链接包含于页面之中,而通常具有较高价值的页面包含的链接也具有较高价值,因而对链接价值的评价有时也转换为对页面价值的评价。这种策略通常运用在专业搜索引擎中,因为这种搜索引擎只关心某一特定主题的页面。创新与贡献研究意义选题背景第九章

    26、9.2 网络爬虫网络爬虫1 urlib 在Python3中,可以使用urlib组件抓取网页,urllib是一个URL处理包,它集合了一些处理URL的模块,常用模块如下:urllib.request模块是用来打开和读取URLs。urllib.error模块包含一些有urllib.request产生的错误,可以使用try进行异常处理。urllib.parse模块包含了一些解析URLs的方法。urllib.robotparser模块用来解析robots.txt文本文件,它提供了一个单独的RobotFileParser类,通过该类提供的can_fetch()方法测试爬虫是否可以下载一个页面。创新与贡献

    27、研究意义选题背景第九章9.2 网络爬虫网络爬虫 urllib使用使用request.urlopen()打开和读取URLs信息,返回的对象response是一个文本对象,可以用read()方法进行读取,再通过print()方法将读到的信息打印出来。这样成功获取了信息,但是显示的是二进制乱码,可以通过decode()命令将网页的信息进行解码,并正确显示出来。例9-35 使用urllib.request.urlopen()接口函数打开一个网站,读取并打印信息。from urllib import request if _name_=_main_:response=request.urlopen(ht

    28、tp:/)html=response.read()print(html)例9-36 通过decode()命令对网页的信息进行解码,源码如下。from urllib import request if _name_=_main_:response=request.urlopen(http:/ 网络爬虫网络爬虫 url不仅可以是一个字符串,也可以是一个Request对象,这就需要先定义一个Request对象,然后将这个Request对象作为urlopen的参数使用,urlopen()返回的对象,可以使用read()进行读取,同样也可以使用geturl()方法、info()方法、getcode()方

    29、法。geturl()返回的是一个url的字符串,info()返回的是一些meta标记的元信息,包括一些服务器的信息,getcode()返回的是HTTP的状态码。data参数分为GET和POST两种,用于向服务器发送数据。根据HTTP规范,GET用于信息获取,POST用于向服务器提交数据。从客户端向服务器提交数据使用POST,从服务器获得数据到客户端使用GET。如果没有设置urlopen()函数的data参数,默认采用GET方式,也就是从服务器获取信息,如果设置data参数为POST,也就是向服务器传递数据。创新与贡献研究意义选题背景第九章9.2 网络爬虫网络爬虫2 Scrapy Scrapy是

    30、为了爬取网站数据并且提取结构性数据而编写的应用框架,可以应用于数据挖掘,信息处理或存储历史数据等一些程序中。使用scrapy框架可以更方便的对爬取的数据进行管理。直接使用pip install scrapy命令安装Scrapy所依赖的环境。找存放Scrapy文件的地方执行命令scrapy startproject get_pachong,然后生成一个包含了Scrapy必要文件的文件夹,在这个文件夹中新建一个pachong.py文件,用来编写爬虫的代码,例2-4是pachong.py的代码。在get_pachong文件里面打开cmd输入执行文件的命令scrapy crawl pachong,就可

    31、以得到运行的结果。创新与贡献研究意义选题背景第九章9.3 数据库 数据库技术的发展为各行各业都带来了很大方便,金融行业、聊天系统、各类网站、办公自动化系统、各种管理信息系统等都少不了数据库技术的支持。本小节主要绍Sqlite、MySQL两种数据库的Python接口,并通过几个示例来演示数据的增、删、改、查等操作。创新与贡献研究意义选题背景第九章9.3 数据库9.3.1 Sqlite数据库 Sqlite是内嵌在Python中的轻量级、基于磁盘文件的数据库管理系统,不需要服务进程,支持使用SQL语句来访问数据库。支持原子的、一致的、独立的和持久的事务,不支持外键限制。通过数据库级的独占性和共享锁定

    32、来实现独立事务,当多个线程同时访问同一个数据库并试图写入数据时,每一时刻只有一个线程可以写入数据。Sqlite支持140TB的数据库,每个数据库完全存储在单个磁盘文件中,以B+数据结构的形式存储。访问和操作SQLite数据时,需要首先导入sqlite3模块,然后创建一个与数据库关联的Connection对象:import sqlite3 conn=sqlite3.connect(example.db)创新与贡献研究意义选题背景第九章9.3 数据库 成功创建Connection对象以后,再创建一个Cursor对象,并且调用Cursor对象的execute()方法执行SQL语句,创建数据表以及查询

    33、、插入、修改或删除数据库中的数据例9-39 使用Cursor对象进行简单数据库操作,源码如下。c=conn.cursor()c.execute(CREATE TABLE stocks(date text,trans text,symbol text,qty real,price real)c.execute(INSERT INTO stocks VALUES(2006-01-05,BUY,RHAT,100,35.14)mit()conn.close()创新与贡献研究意义选题背景第九章9.3 数据库 如果需要查询表中内容,重新创建Connection对象和Cursor对象之后,可以使用下面的代码

    34、来查询:for row in c.execute(SELECT*FROM stocks ORDER BY price):print(row)创新与贡献研究意义选题背景第九章9.3 数据库1 Connection对象 Connection是sqlite3模块中最基本的类,Connection对象使用方法如下:connect(database,timeout,isolation_level,detect_types,factory):连接数据库文件。sqlite3.Connection.execute():执行SQL语句;sqlite3.Connection.cursor():返回游标对象;sql

    35、ite3.Cmit():提交事务;sqlite3.Connection.rollback():回滚事务;sqlite3.Connection.close():关闭连接。创新与贡献研究意义选题背景第九章9.3 数据库2 Cursor对象 Cursor也是sqlite3模块中重要的类,Cursor对象使用方法如下:close():关闭游标;(sqlite3.Connection 与上文一致)execute():执行SQL语句;executemany():重复执行多次SQL语句;executescript():一次执行多条SQL语句;fetchall():从结果集中返回所有行记录;fetchmany

    36、():从结果集中返回多行记录;fetchone():从结果集中返回一行记录,3 Row对象例9-42 row对象方法应用实例,源码见二维码。创新与贡献研究意义选题背景第九章9.3 数据库9.3.2 MySQL数据库 Python标准数据库接口为Python DB-API,它提供了数据库应用的编程接口。1 安装MySQLdbMySQLdb是用于Python链接Mysql数据库的接口,它实现了Python数据库API规范V2.0,它是基于MySQL C API建立的。安装MySQLdb,访http:/ 数据库连接3 创建数据库表创新与贡献研究意义选题背景第九章9.3 数据库4 数据库增删改查(1)

    37、数据增加(2)数据删除 删除操作用于删除数据表中的数据。(3)数据修改(4)数据删除 删除操作用于删除数据表中的数据。5 数据库执行事务 Python DB API 2.0的事务提供了两个方法commit和rollback。创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程OpenCV(Open Source Computer Vision Library)诞生于Intel研究中心,是一个开放源码的计算机视觉库,采用C和C+语言编写,可以运行在Linux、Windows和Mac等操作系统上。OpenCV提供了Python、Ruby、MATLAB以及其他语言的接口,其包含的函数有500

    38、多个,覆盖了计算机视觉的许多应用领域。下面介绍基于Python的OpenCV图像编程。创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程9.4.1图像基础操作1 图像读入与显示 使用cv2.imread()函数可以读入图像,图像路径需要在此程序的工作空间中,或者向函数提供图像完整的路径。图像的读入方式有两种参数:cv2.IMREAD_COLOR,以彩色模式读入图像,为默认读取方法;cv2.IMREAD_GRAYSCALE,以灰度模式读入图像。例9-50使用cv2.imread()方法读入图像,源码如下。import numpy as npimport cv2img=cv2.imrea

    39、d(messi5.jpg,0)创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程 使用函数cv2.imshow()显示图像时,窗口可以根据图像的尺寸自动调整大小,同时可以创建多个窗口。例9-51使用cv2.imshow方法显示图像,源码如下。cv2.imshow(image,img)cv2.waitKey(0)cv2.destroyAllWindows()创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程2 修改像素值例9-52读入一副图像,然后对其像素值进行修改,源码如下。import cv2import numpy as npimg=cv2.imread(/home/d

    40、uan/workspace/opencv/images/roi.jpg)px=img100,100print(px)blue=img100,100,0print(blue)根据像素的行和列的坐标获取其像素值,RGB图像的返回值为B,G,R的值,灰度图像的返回值是相应的灰度值。创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程3 获取图像属性 图像的属性包括行、列、通道、图像数据类型和像素数目等,OpenCV自带许多获取图像属性的函数。img.shape方法可以获取图像的形状,返回值是一个包含行数、列数和通道数的元组。例9-53 读入一副图像,然后获取图像的形状属性,源码如下。impo

    41、rt cv2import numpy as npimg=cv2.imread(/home/duan/workspace/opencv/images/roi.jpg)print(img.shape)创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程img.size方法返回值是图像的像素数目。例9-54读入一副图像,然后获取图像的像素数目,源码如下。import cv2import numpy as npimg=cv2.imread(/home/duan/workspace/opencv/images/roi.jpg)print(img.size)创新与贡献研究意义选题背景第九章9.4

    42、OpenCV图像编程9.4.2图像几何变换1 缩放图像缩放是指改变原始图像的尺寸,在OpenCV中可以使用cv2.resize()方法实现图像的缩放。2 平移 图像平移将对象向某个方向移动一定距离,如果沿(x,y)方向移动,移动的距离是(tx,ty),可以使用下面移动矩阵:yxttM10013 旋转旋转是把一个图像旋转一定角度,可以使用如下面形式的旋转矩阵。yxttM1001创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程OpenCV允许在任意坐标进行旋转,此时旋转矩阵的形式为。xcenterxcenterycenterxcenterM)1(1)1(OpenCV提供cv2.getR

    43、otationMatrix2D函数构建图像旋转矩阵。创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程9.4.3图像滤波 OpenCV可以对图像进行低通滤波,高通滤波等操作,低通滤波帮助去除图像噪音,高通滤波用于寻找图像的边缘。1 均值滤波 均值滤波需要使用一个归一化卷积框,将卷积框覆盖区域所有像素的平均值代替中心元素的值。在OpenCV中可以使用cv2.blur()函数和cv2.boxFilter()函数完成均值滤波操作。创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程2 高斯滤波 高斯滤波可以有效的从图像中去除高斯噪音。Python中使用cv2.GaussianBlu

    44、r()函数完成图像高斯滤波操作,需要指定高斯核宽和高以及高斯函数沿X,Y 方向的标准差。3 中值滤波 中值滤波使用卷积框中所有像素的中值替代中心像素的值,经常用来去除椒盐噪声,Python中使用cv2.medianBlur()函数完成图像中值滤波操作。创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程9.4.4数学形态学 形态学转换是对图像形状进行操作,两个基本的形态学操作是腐蚀和膨胀。腐蚀就像土壤侵蚀一样,会把前景物体的边界腐蚀掉。卷积核沿着图像滑动,如果与卷积核对应的原图像中所有像素值都为1,那么中心元素就保持原来的像素值,否则变为0。因此腐蚀操作会使前景物体会变小,整幅图像的白

    45、色区域减少。腐蚀经常用于去除白噪声,或者用来断开两个相连的物体。例9-61 使用一个5x5的卷积核进行图像腐蚀,源码如下。import cv2import numpy as npimg=cv2.imread(j.png,0)kernel=np.ones(5,5),np.uint8)erosion=cv2.erode(img,kernel,iterations=1)创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程 膨胀与腐蚀相反,与卷积核对应的原图像的像素值中只要有一个是1,中心元素的像素值就是1,膨胀操作会增加图像中的白色区域。膨胀通常用来连接两个分开的物体。一般对图像进行去噪时先

    46、进行腐蚀再用膨胀,因为腐蚀在去掉白噪声的同时,也会使前景对象变小。例9-62使用一个5x5的卷积核进行图像膨胀,源码如下。import cv2import numpy as npimg=cv2.imread(j.png,0)kernel=np.ones(5,5),np.uint8)dilation=cv2.dilate(img,kernel,iterations=1)创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程1 区域面积检测例9-63 计算一张二值化图像中黑色部分面积所占比例,源码如下。import cv2import numpy as np9.4.5应用举例img=cv2.

    47、imread(xp2.jpg)b=0w=0for i in range(img.shape0):for j in range(img.shape1):if imgi,j,0=0:w=w+1 创新与贡献研究意义选题背景第九章9.4 OpenCV图像编程all=img.shape0*img.shape1print(w/all)cv2.imshow(,img)cv2.waitKey(0)例9-65使用K值聚类的方法进行颜色量化,源码见二维码。运行结果如图9-2所示。图9-2 图像量化结果创新与贡献研究意义选题背景第九章9.5 数据可视化9.5.1 matplotlib可视化 matplotlib模块

    48、依赖于numpy模块和tkinter模块,可以绘制多种形式的图形,包括线图、直方图、饼状图、散点图、误差线图等等。例9-67 使用matplotlib绘制散点图,源码如下。a=np.arange(0,2.0*np.pi,0.1)b=np.cos(a)pl.scatter(a,b)pl.show()例如:创新与贡献研究意义选题背景第九章9.5 数据可视化9.5.2 plotly可视化 Plotly是一种使用JavaScript开发的制图工具,提供了与Python交互的API。Plotly能够绘制具有用户交互功能的精美图表。例9-71使用Plotly绘制折线图,源码见二维码。运行结果如图9-3所示

    49、。图9-3 Plotly绘制折线图结果创新与贡献研究意义选题背景第九章9.5 数据可视化例9-72 使用Plotly绘制散点图,源码见二维码。运行结果如图9-4。图9-4使用Plotly绘制散点图结果创新与贡献研究意义选题背景第九章9.5 数据可视化例9-73 使用Plotly绘制柱状图,源码见二维码。运行结果如图9-5所示。图9-5使用Plotly绘制柱状图结果创新与贡献研究意义选题背景第九章9.5 数据可视化例9-74 使用Plotly绘制饼状图,源码见二维码。运行结果如图9-6所示。图9-6 用Plotly绘制饼状图结果创新与贡献研究意义选题背景第九章9.5 数据可视化例9-75 使用P

    50、lotly绘制三维图,源码见二维码。运行结果如图9-7所示。图9-7使用Plotly绘制三维图结果创新与贡献研究意义选题背景第九章9.6 基于Python机器学习算法9.6.1线性回归 测试数据集为一组二维平面上的随机点集,保存在txt格式之中,其中第二列为横坐标值,第三列为纵坐标值,如图9-8所示。编程实现使用线性回归的方法对其进行拟合。图9-8 线性回归测试数据创新与贡献研究意义选题背景第九章9.6 基于Python机器学习算法导入相关包:import numpy as npfrom pylab import*训练w和b的值,返回(w,b)的向量:def train_wb(X,y):if

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第九章-Python数据处理与机器学习课件.pptx
    链接地址:https://www.163wenku.com/p-4961588.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库