百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

人工智能学习071_SVM支持向量机_人脸识别算法_LFW人脸数据加载

toyiye 2024-09-16 06:05 2 浏览 0 评论


然后我们继续来看
这里有个lfw_home可以看到这个数据是,包含了人脸数据然后我们继续看,在我们的顶你用户目录下,如果安装了,sklearn就会有这样一个目录,scikit_learn_data目录,这个里面可以看到可以看到这个文件夹中有个lfw_home文件夹是对.zip文件夹的解压,这个下载以后放到对应的这个文件夹下面就可以了这个是人脸的图片集


import numpy as np 导入数学计算库from sklearn. svm import SVC 导入支持向量机 线性分类器import matplotlib.pyplot as plt 加载人脸图片以后,我们用pyplot把人脸图片数据展示一下from sklearn.model_selection import train_test_split 人脸的数据,我们需要拆分,所以这里我们再导入train_test_splitfrom sklearn.decomposition import PCA 然后我们再来导入这个PCA对数据进行降维,因为人脸数据比较大from sklearn.metrics import accuracy_score 这个是测试精确度的,用来评估我们的模型的精确度from sklearn.linear_model import LogisticRegression 然后我们再导入逻辑斯蒂回归,用逻辑斯蒂回归进行学习以后,然后跟支持向量机的结果进行对比一下from sklearn import datasets 导入数据集库,这个库sklearn为了让我们方便进行机器学习,准备的这个库,对于数据量小的数据可以直接导入,对于比如我们现在这个人脸识别的库,就挺大,如果直接导入就很慢,因为库还在国外所以可以直接下载上面的.zip包,然后解压,放到对应的文件夹中直接用就可以了.然后我们去加载数据,可以看到之前我们加载数据用的是load对吧datasets.load_boston比如这个波士顿房价的数据,还有,load_iris 莺尾花的数据现在我们加载的人脸数据的,数据集比较大,所以这回我们需要用datasets.fetch_来进行加载了可以看到
我们使用datasets.fetch_lfw_people()来加载人脸数据,这里面有一些是名人的人脸数据
然后我们来看一下这个函数的参数可以看到这里默认这个data_home是None我们看一下这个data_home的解释,可以看到,这个指的就是我们电脑的home目录对吧
可以看到就是上面的目录,对于Linux来说,就是对应的root目录对吧然后我们再来看一个参数resize这个参数意思就是 可以对图片进行大小的缩放对吧,比如上面写0.5 就表示默认缩放百分之50
我们这里给resize = 1 就可以了,我们不缩放图片然后我们再来看 min_faces_per_person =0 可以看到这个是什么意思?这个表示需要的数据的个数,可以看到,最小需要数据0个,这个如果设置为0,有可能会拉不下来数据对吧所以这里我们就设置成70让他至少给我们拉下来70个数据,有些人一看对应的,咱们说的上面的目录中没有数据,就是因为这里没有设置这个min_faces_per_person= 对吧,默认是0我们去home目录,取看看对应的数据,可以看到有这么多我们随便找个人脸,可以看到,这个人Chris_Cooper 有两个照片然后我们继续我们看这个Dan_Monson这个人的照片可以看到这个只有一个照片然后我们再来看布什的照片可以看到这个Jeb_Bush就很多照片

然后我们再来看George_W_Bush 就更多照片了然后我们再去看现在我们加载一下人脸数据去看看data = datasets.fetch_lfw_people(resize=1,min_faces_per_person=70)data可以看到,显示的结果这里data 和images这里的data表示 人脸数据然后images表示图片的数据,可以看到他们有什么区别?下面我们再说然后我们再来看,这里的target可以看到是个array对吧,里面写了5,6,3...这个表示,每张图片代表的人名是什么可以看到与target对应的还有一个target_names 这里的,target_names对应的,里面就是Ariel_Sharon 然后Colin_Powell 可以看到..也就是从0开始,那么5就代表第5个人名然后我们再来看看,可以看到data的维度是2维度的,然后images维度是3维的对吧然后我们使用X= data['data']y= data['target']faces = data[images]display(X.shape,faces.shape,y.shape)取看一下各个数据的大小,可以看到这里X是1288行,然后有11750个特征这里的1288 就表示有1288个照片对吧,然后11750表示?有11705个像素对吧,可以知道这些照片的大小是一样大的,尺寸所以上面有提供的一个缩放图片的功能对吧,
然后y可以看到也是1288个图片,然后对应的125,94 我们后面再说然后y的话,不用说了y表示1288 表示target对吧,也就是对应的哪个图片是哪个人那么这里的data,打印出来的数据,实际上就是指的像素对吧,可以看到上面,这里的都是像素,每个图片有11750个像素组成然后我们去加载一张图片区看看index = np.random.randint(0,1288,size =1)[0] 我们来获取一个随机数,因为我们说了,我们1288个图片对吧,所以我们获取从0到1288中的一个随机数,然后[0],表示,因为np.random.randint(0,1288,size =1)获取的是一个numpy数组,加上[0]才表示是一个具体的数值face = faces[index] 这个表示我们从,上面的images中,根据index这个随机数,随机获取一张图片可以看到获取以后,然后plt.imshow(face) 可以看到,显示出来了,但是默认可以看到显示的是绿色调的,因为默认是绿色的然后我们再来看,我们修改一下色调,这里plt.imshow(face,cmap='gray') 可以看到,显示出来了,这里改成按照灰色显示可以看到就显示成黑白的了
plt.colormaps()我们再去看看有什么可选的颜色,可以看到有这么多对吧


然后我们可以选择一个plt.imshow(face,cmap='bone') 这个颜色可以看到显示出来是这样的然后我们再来看可以看到我们再设置一个ocean大海的颜色plt.imshow(face,cmap='ocean') 可以看到然后我们再去看一下,因为我们知道,这里的X,也就是data和images中的内容我们说是一样的对吧可以看到他们一个是X是1288行,11750列,这个11750我们说是像素,也是指的是一张图片,但是这个11750仅仅是一个数对吧,我们的图片是有长和高的,在二维中,所以如果对11750进行reshape就可以得到125,94对吧
然后我们再看这个image对应的faces(1288,125,94) 这个是三维的,他对应的是 三维的
我们说X和faces的数据是一样的,他们形状不一样对吧


然后我们看faces中的125*94可以看到正好是11750对吧这就说明faces进行了reshape或者reval对吧然后我们来显示一下可以看到这里face = X[index] 这里我们改成从X中获取,人脸数据,可以看到display(face.shape)报错了,说不合适的形状11750,因为11750是,一个图片的所有的像素个数,而我们的图片是有高度和宽度的所以这里我们对X进行一下reshapeface = X[index].reshape(125,94) 可以看到我们再去执行就可以了不报错了.然后我们再去看一下,我们加载的图片都是哪个名字的人,可以看到target_names = data['target_names'] 这里可以看到加载出了所有的人名然后我们知道y,其实存储了,名字的下标对吧那么我们从y中获取对应的index这个人脸的,名字的下标namename = y[index]对吧然后我们再去可以看到获取以后,我们打印一下对应的名字print(target_names[name]) 可以看到现在我们就可以把人的照片以及人的名字都加载出来了.

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码