Python实现LDA和KNN人脸识别模型(LinearDiscriminantAnalysis和KNeighborsClassifier算法)项目实战

news2024/11/30 8:48:51

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

1.项目背景

人脸识别,是基于人的脸部特征信息进行身份识别的一种生物识别技术。用摄像机或摄像头采集含有人脸的图像或视频流,并自动在图像中检测和跟踪人脸,进而对检测到的人脸进行脸部识别的一系列相关技术,通常也叫做人像识别、面部识别。

人脸识别产品已广泛应用于金融、司法、军队、公安、边检、政府、航天、电力、工厂、教育、医疗及众多企事业单位等领域。随着技术的进一步成熟和社会认同度的提高,人脸识别技术将应用在更多的领域。

本项目先对人脸数据进行读取和处理,再通过LDA进行数据降维,最后用K近邻算法搭建模型进行人脸识别。

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),,数据项统计如下:

数据详情如下(部分展示):

3.数据预处理

3.1 用Pandas工具查看数据

使用Pandas工具的head()方法查看前五行数据:

 关键代码:

4.探索性数据分析

4.1 显示第一张图片

用Matplotlib工具的imshow()方法进行图片的显示:

 

4.2 y变量分组统计柱状图

用Matplotlib工具的plot()方法绘制柱状图:

 从上图可以看出,从上图可以看出标签共7中类别,其中第3类的数量最多。

5.特征工程

5.1 建立特征数据和标签数据

关键代码如下:

5.2 数据集拆分

数据集集拆分,分为训练集和测试集,75%训练集和25%测试集。关键代码如下:

5.3 LDA数据降维

使用LDA算法进行数据的降维,输出如下:

从上图可以看到,降维后的特征个数为6,训练集样本数为966。

关键代码如下:

6.构建人脸识别模型

主要使用KNeighborsClassifier算法,用于目标分类。

6.1 模型构建(不使用LDA降维)

6.2 模型构建(使用LDA降维)

 

从上表可以看出,使用LDA进行数据降维后,F1分值提升较多。

6.3 应用网格搜索寻找最优参数值

针对模型中的参数n_neighbors,通过网格搜索算法寻找最优的参数值,如下图所示:

 6.4 最优参数模型构建(使用LDA降维)

通过上表可以看出,最优参数构建的模型 F1分值有一点的提升。

7.模型评估

7.1评估指标及结果

评估指标主要包括准确率、查准率、召回率、F1分值等等。

 

从上表可以看出,人脸识别模型效果良好。

关键代码如下:

7.2 查看是否过拟合

查看训练集和测试集的分数:

关键代码:

7.3 分类报告

人脸识别模型分类报告:

从上图可以看出,分类为1的F1分值为0.52;分类为2的F1分值为0.73,其它类型的以此类推。

8.结论与展望

综上所述,本项目采用了LDA数据降维和KNN分类模型,并通过网格搜索优化算法寻找最优的参数值构建模型,最终证明了我们提出的模型效果良好。 

本次机器学习项目实战所需的资料,项目资源如下:

项目说明:
链接:https://pan.baidu.com/s/1dW3S1a6KGdUHK90W-lmA4w 
提取码:bcbp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26228.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2021-TITS】Deep Learning in Lane Marking Detection: A Survey

概述 回顾了针对路面标线的深度学习算法,主要分析了他们的网络架构及优化目标;此外还总结了现有车道标线相关的数据集,评价基准及常见的数据处理技术 PaperCode 总结 创新点: 1.总结深度学习网络架构、优化目标2.总结了相关现有…

使用Portman、Postman和Newman自动化API测试

几个月前我换了工作和公司,很喜欢这样的变化,但多少会有些不知所措。现在事情已经安排好了一些,我可以回来做一些我喜欢的事情。 现在正在工作的团队是一个新团队,我们正在努力弄清楚我们的流程,并试图尽可能地实现自…

编译原理实验一:源程序的预处理及词法分析程序的设计与实现(python)

实验目的 设计并实现一个包含预处理功能的词法分析程序,加深对编译中词法分析过程的理解。 实验要求 1、实现预处理功能 源程序中可能包含有对程序执行无意义的符号,要求将其剔除。 首先编制一个源程序的输入过程,从键盘、文件或文本框输…

[附源码]java毕业设计校园拓展活动管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

论文阅读之Dynamic Routing Between Capsules(2017)

文章目录前言capsule network参考前言 capsule network 可以简单理解为将神经网络的标量计算,赋予了方向,变换成了向量进行计算。 标量只有大小之分。 向量不仅有大小,还有方向之分。 应该可以略微感受到这种思路的魔力了。 capsule 主要是…

IB历史备考,如何拿高分?

邻近期末考,大伙儿是不是十分焦虑不安呢?大家的老师经常发觉学生们本来知识要点都把握得挺不错的,但每到考試便是拿不上满意的考试成绩,让人十分郁闷!因此应对那样的难点,大家的IB历史时间评委为大伙儿筹备…

行业分析| 智慧消防对讲

消防工程关系国计民生,关系到每个公民的人身和财产安全,在每个场所的建设中,消防工程建设是必不可少的一个板块,包括消防应急通道建设和应急设备建设两个方面。其中消防系统设备建设主要分为九大系统的建设:消防水系统…

VectorCAST测试工具环境搭建

**目的:**本文提供VectorCAST使用的实际操作方法,以便项目可以很好的使用VectorCAST工具。 适用范围:VectorCAST是一个专门针对嵌入式软件的C/C代码进行单元测试的工具,它可以自动生成测试用例、评估测试结果并生成测试报告。 **工…

十年来高薪专业变成了它——信息安全

“什么专业好就业?” “什么专业以后赚的钱多?” 确实,专业对应的行业薪资各有不同,选对了专业赢在起跑线也不是没有可能! 麦可思机构分析了近十年大学生就业数据情况,发现从2011年到2020年的大学毕业生高…

Windows简单安装redis

1.去git下载 或者去搜点资源,windows下载是压缩包,找个目录解压进去。 Github下载地址:https://github.com/MicrosoftArchive/redis/releases 2.打开cmd 尝试启动 比如我放在d盘soft下面,windows你直接打开cmd,输入d…

Baklib知识分享|文档生命周期:确保您的文档产出效率

一个多世纪以来,文档一直是任何产品或服务的支柱。它是用户在使用您的产品、应用程序、网站或其他软件服务时所引用的内容。但在现代,随着大多数帮助或支持文档从传统形式转移到数字形式,对效率的需求比以往任何时候都更加明显。此外&#xf…

[附源码]SSM计算机毕业设计基于javaweb电影购票系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

【Shell 脚本速成】01、编程语言与 Shell 脚本介绍

目录 一、编程语言介绍 二、shell介绍 1、shell介绍 2、bash shell基本特性 2.1 命令和文件自动补全 2.2 常见的快捷键 3、shell脚本介绍 准确来说: 3.1 案例演示 3.2 什么时候用到脚本? 4、shell脚本语法 4.1 shell脚本组成 4.2 脚本文件命…

Spring事务配置(案例:转账业务追加日志,事务传播行为)

目录 Spring事务配置 案例 事务传播行为 代码实现: 1.文件大致格式: 2.ServiceAdvise(AOP功能包) 3.JdbcConfig(jdbc配置文件,包含了事务管理器) 4.MybatisConfig(mybatis配置…

Unity技术手册-UGUI零基础详细教程-ScrollBar和ScrollView

往期文章分享点击跳转>《导航贴》- Unity手册,系统实战学习点击跳转>《导航贴》- Android手册,重温移动开发 本文约8千字,新手阅读需要20分钟,复习需要12分钟 【收藏随时查阅不再迷路】 👉关于作者 众所周知&…

2022/11/22 [easyx]关于字符和一些背景

#include<stdio.h> #include<graphics.h> //包含图形库头文件 int main() {//创建一个窗口//(show console 显示控制台)&#xff0c;640&#xff0c;480为窗口大小*initgraph(640,480,SHOWCONSOLE);//showconsole可以换成NOCLOSE:程序不能关闭// NOMINIMIZE不能最小…

洛谷 T292115 [传智杯 #5 练习赛] 树的变迁#并查集+逆向思维

一道质量挺高的题&#xff08;个人感觉&#xff09;&#xff0c;题目说了每次要删除一条边&#xff0c;分成两棵树&#xff0c;那么很容易想到用并查集去维护。但是问题在于如果要将原来那棵树分成新的两个树必然不能使用路径压缩&#xff0c;如图所示 如果使用了路径压缩那就…

数据安全法vs国家标准,40+标准助力数据安全保驾护航~(附整理文档及pdf下载)

2021年9月1日&#xff0c;《中华人民共和国数据安全法》生效施行&#xff0c;如何助力数据安全法的贯彻落实&#xff0c;做到数据合法合规的使用需要建设一系列的数据安全标准体系。也就是说&#xff0c;有了数据安全相关标准&#xff0c;就是有了如何践行数据安全法落地实施的…

Oracle LiveLabs实验:Manage and Monitor Autonomous Database

概述 本研讨会中的实验将引导您完成开始使用 Oracle 自治数据库的所有步骤。 首先&#xff0c;您将创建一个 Oracle 自治数据库实例。 然后&#xff0c;您将练习使用自治数据库工具和 API 从不同位置以不同格式加载数据的几种方法。 您将使用 SQL 分析数据并使用 Oracle Analy…

JavaScript构造函数和原型:继承

ES6之前并没有给我们提供 extends 继承。我们可以通过构造函数原型对象模拟实现继承&#xff0c;被称为组合继承。 call() 调用这个函数, 并且修改函数运行时的 this 指向 fun.call(thisArg, arg1, arg2, ...) thisArg &#xff1a;当前调用函数 this 的指向对象 arg1&am…