03- SVC 支持向量机做人脸识别 (项目三)

news2024/9/20 12:35:58
  • 数据集描述: sklearn的lfw_people函数在线下载55个外国人图片文件夹数据集来精确实现人脸识别并提取人脸特征向量

  • 数据集地址: sklearn.datasets.fetch_lfw_people — scikit-learn 1.2.1 documentation
  • PCA降维:   pca = PCA(n_components=0.9) 
  • 数据拆分:  X_train, X_test, y_train, y_test = train_test_split(X,  y,  test_size = 0.1)
  • 支持向量机:  svc = SVC()      # svc.fit(X_train_pca, y_train)
  • 网格搜索最佳参数:
svc = SVC()
params = {'C':np.logspace(-3,1,20),'kernel':['rbf','poly','sigmoid','linear']}
gc = GridSearchCV(estimator = svc,param_grid = params)
gc.fit(X_train_pca,y_train)
print('网格搜索最佳参数:',gc.best_params_)   #  {'C': 3.79269019073,'kernel':'rbf'}
print('模型得分是:',gc.score(X_test_pca,y_test))   # 0.883720930232
y_pred = gc.predict(X_test_pca)


2、SVC建模人脸识别

2.1、导包

import numpy as np
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
import matplotlib.pyplot as plt
from sklearn.decomposition import PCA
from sklearn.model_selection import GridSearchCV
from sklearn import datasets

2.2、数据加载

# 第一次加载,需要联网下载
# 下载路径:C:\Users\likai\scikit_learn_data\lfw_home
faces = datasets.fetch_lfw_people(resize= 1,min_faces_per_person=70)
# 形状是:(125,94)
X  = faces['data']
y = faces['target']
display(X.shape,y.shape)       # (1288, 11750)   (1288,)

2.3、数据降维与拆分

pca = PCA(n_components=0.9)
X_pca = pca.fit_transform(X)

X_train,X_test,X_train_pca,X_test_pca,
y_train,y_test = train_test_split(X, X_pca, y, test_size = 0.1)
display(X_train.shape,X_test.shape)
display(X_train_pca.shape,X_test_pca.shape)

2.4、直接使用SVC建模预测

svc = SVC()
svc.fit(X_train_pca,y_train)
svc.score(X_test_pca,y_test)      # 输出:0.7984496124031008

2.5、网格搜索确定最佳参数

%%time
svc = SVC()
params = {'C':np.logspace(-3,1,20),'kernel':['rbf','poly','sigmoid','linear']}
gc = GridSearchCV(estimator = svc,param_grid = params)
gc.fit(X_train_pca,y_train)
print('网格搜索最佳参数:',gc.best_params_)   #  {'C': 3.79269019073,'kernel':'rbf'}
print('模型得分是:',gc.score(X_test_pca,y_test))   # 0.883720930232
y_pred = gc.predict(X_test_pca)

2.6、数据可视化

target_names = faces.target_names
print('目标任务名字如下:',target_names)
plt.figure(figsize=(5*2,10*3))
for i in range(50):
    plt.subplot(10,5,i + 1)
    plt.imshow(X_test[i].reshape(125,-1),cmap = 'gray')
    true_name = target_names[y_test[i]].split(' ')[-1]
    pred_name = target_names[y_pred[i]].split(' ')[-1]
    plt.title('True:%s\nPred:%s' % (true_name,pred_name))
    plt.axis('off')

 

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

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

相关文章

正大期货本周财经大事抢先看

美国1月CPI、Fed 等央行官员谈话 美国1月超强劲的非农就业人口,让投资人开始上修对这波升息循环利率顶点的预测,也使本周二 (14 日) 的美国 1月 CPI 格外受关注。 介绍正大国际期货主账户对比国内期货的优势 ​第一点:权限都在主账户 例如…

B站基于缓存优化 PRESTO 集群查询性能

导读:本次分享主题为 B 站 Presto 集群查询性能的优化,首先会简单介绍 Presto以及 B 站内部 Presto 集群的架构。接下来讲解针对 Presto 做的改造,主要是 Presto 搭配 Alluxio 和 Presto 搭配 Alluxio local cache 的使用。最后会对后续计划开…

C++类基础(十三)

类的继承 ● 通过类的继承(派生)来引入“是一个”的关系( 17.2 — Basic inheritance in C) – 通常采用 public 继承( struct V.S. class ) – 注意:继承部分不是类的声明 – 使用基类的指针…

StarRocks技术内幕 | 资源隔离原理解析

资源隔离一直是 StarRocks 用户讨论较多的话题,对于资源隔离的诉求,主要集中在四点:1. 很多用户关注资源的隔离性,期望当有核心业务的查询运行时,可以限制其他类型任务的使用资源,进而保障核心业务的响应时…

SpringMVC(1)

Web项目:基于HTTP协议,当一个用户从浏览器上面输入URL地址之后,URL能够和我们的程序映射起来,可以让用户的请求触达到后端程序里面,并且根据程序的处理,把结果返回浏览器; Spring MVC要进行学习的内容: 1)连…

三分钟学习 Gitee OpenAPI

文章目录1 什么是 Gitee Open API ?2 如何操作Open API ?2.1 申请私人令牌2.2 发起网络请求3 其他Git Open API3.1 Github Open API3.2 Gitlab OpenAPI1 什么是 Gitee Open API ? 简单说就是 网络请求 Open API 让我们可以通过网络请求的方式对 Git仓库的 分支&#xff0…

LinkedList与链表(数据结构系列5)

目录 前言: 1.链表的概念以及分类 1.1链表的概念 1.2分类 1.2.1单向和双向 1.2.2循环和非循环 1.2.3带头和不带头 2.无头单链表的模拟实现 3.双向链表的模拟实现 4.LinkedList的简单介绍 5.LinkedList的遍历 5.1直接打印 5.2for-each遍历 5.3迭代器遍历…

【Vercel】教你部署imsyy/home个人主页

本篇博客教你如何部署一个自己的个人主页 项目地址:https://github.com/imsyy/home 本文首发于 慕雪的寒舍 1.fork仓库vercel部署 首先我们点击fork,将仓库复刻到自己的账户 随后进入vercel,点击dashboard-add new-project 选择你复刻的仓库…

我的Android开发【分代收集算法】

为什么要采用分代收集算法? 分代的垃圾回收策略,是基于这样⼀个事实:不同的对象的⽣命周期是不⼀样的。因此,不同⽣命周期的对象可以采取不同的收集⽅式,以便提⾼回收效率。在 Java 程序运⾏的过程中,会产…

【大数据基础】vmware+ununtu安装详细过程

环境配置 1. 虚拟机VMware下载与安装 首先安装vmware workstation 密钥直接利用科技生成。 检查vmware是否成功安装 2. VMware安装Ubuntu18.04 LTS 在清华源镜像站找到合适版本的ubuntu 联网安装需要一些时间,大致在一到两个小…

NetSuite Balancing Segment平衡段

春节假期偷了一段时间懒,现在开始工作了。今朝谈一个偏门题目,于未知领域再下一城。说这个题目偏,就要讲讲渊源。话说在Oracle的EBS和Fusion产品中的COA领域有个功能叫做“Balancing Segment”。 问了几位Oracle老炮,也说是对第二…

RDS-MySQL算不算国产数据库及其风险问题

作者:IT圈黎俊杰 笔者在参与国内某大型央企信创替代研究工作中,遇到从各方面传来的“云平台上的RDS就是国产数据库,使用RDS替代原数据库,也是信创替代”的说法,当说的人多了,产生的误导性强了以后&#xff…

Qt OpenGL(三十八)——Qt OpenGL 核心模式-绘制彩色的点

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(三十八)——Qt OpenGL 核心模式-绘制彩色的点 一、场景 续接上一篇文章(动态刷新点云),动态刷新点云数据,如下图: 如果,我们需要的点的绘制是彩…

数据挖掘学习笔记——GEO数据库:芯片数据分析

数据挖掘 数据挖掘学习笔记——GEO数据库:芯片数据分析 文章目录数据挖掘一、芯片基础知识1.1、背景二、GEO数据库概述2.1、基础简介2.2、检索页面展示三、GSE项目的三种下载方式3.1、主页下载原始数据3.2、主页下载表达矩阵3.3、GEOquery包下载表达量四、基因名与…

AI与制造的联合与突破,捷配是作何选择的?

最近的chatGPT可谓是火遍全球,人工智能与AI的话题再一次被推上了各大平台热搜,各个行业、各路专家也大谈对各个行业的影响。那么PCB制造业中,AI意味着什么?某一天,在生产工厂中,看着每一条生产链条持续运行…

一文教你学会添加通达信外挂接口(财经外挂)

今天重点讲解怎样在您的股票交易软件里增加财经类外挂,对您的股票交易软件进行便利化的设置与完善,把您想看的内容统统加紧你的交易软件,方便以后的研究操作。 具体流程是这样的:打开您要添加的财经网站官网,复制官网…

第四章 模块和组件、模块化和组件化的理解

1、模块 理解:向外提供特定功能的js程序,一般就是一个js文件为什么要拆成模块:随着业务逻辑增加,代码越来越多且复杂作用:复用js,简化js的编写,提高js运行效率 我们以一段代码举例说明拆分模块…

C#WPF基础教程3——资源字典、样式、

资源字典 创建资源字典 创建合并资源属性 资源字典的使用 引用类库中的资源字典 在类库中创建资源字典 类库中资源字典的使用 样式 添加样式 使用静态的方式为按钮添加样式 设置背景样式,不能直接使用value 关联事件处理程序 UI层创建事件关联程序 model端创建…

每日学术速递2.13

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV、cs.AI、cs.CL 1.Deep Intra-Image Contrastive Learning for Weakly Supervised One-Step Person Search 标题:深度图像内对比学习用于弱监督的单步人物搜索 作者&#…

模型解释性:SHAP包的使用

本篇博客介绍另一种事后可解释性方法:SHAP(SHapley Additive exPlanation)方法。 1. Shapley值理论 Shapley值是博弈论中的一个概念,通过衡量联盟中各成员对联盟总目标的贡献程度,从而根据贡献程度来进行联盟成员的利益分配,避免…