当前位置: 首页 > article >正文

基于支持向量机(svm)的人脸识别

注意:本文引用自专业人工智能社区Venus AI

更多AI知识请参考原站 ([www.aideeplearning.cn])

数据集加载与可视化

from sklearn.datasets import fetch_lfw_people
faces = fetch_lfw_people(min_faces_per_person=60) 
# Check out sample images
import matplotlib.pyplot as plt
fig, ax = plt.subplots(3, 5)
for i, axi in enumerate(ax.flat):
    axi.imshow(faces.images[i], cmap='bone')
    axi.set(xticks=[], yticks=[], xlabel=faces.target_names[faces.target[i]])

使用 PCA 和 SVC 构建模型

from sklearn.svm import SVC
from sklearn.decomposition import PCA
from sklearn.pipeline import make_pipeline
pca = PCA(n_components=150, whiten=True, random_state=42)
svc = SVC(kernel='rbf', class_weight='balanced')

model = make_pipeline(pca, svc)
# train, test
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(faces['data'], faces['target'], test_size=0.2, random_state=42)

使用网格搜索 CV 查找最佳模型

from sklearn.model_selection import GridSearchCV

param_grid ={
    'svc__C': [1, 5, 10, 15],
    'svc__gamma': [0.0001, 0.0005, 0.001, 0.005],
}
grid = GridSearchCV(model, param_grid=param_grid, cv=5)
%time grid.fit(X_train, y_train)

 

{'svc__C': 1, 'svc__gamma': 0.005}
grid.best_params_
grid.best_estimator_

使用最佳模型进行预测 

final_model = grid.best_estimator_
y_pred = final_model.predict(X_test)

 可视化数据

fig, ax = plt.subplots(4, 6)
for i, axi in enumerate(ax.flat):
    axi.imshow(X_test[i].reshape(62, 47), cmap='bone')
    axi.set(xticks=[], yticks=[])
    axi.set_ylabel(faces.target_names[y_pred[i]].split()[-1], 
                  color='black' if y_pred[i] == y_test[i] # correct label
                  else 'red') # incorrect label

fig.suptitle('Predicted Names; Incorrected Labels in Red', size=14);

模型评估指标

from sklearn.metrics import classification_report
print(classification_report(y_test, y_pred, 
                            target_names=faces.target_names))
                   precision    recall  f1-score   support

     Ariel Sharon       0.90      0.75      0.82        12
     Colin Powell       0.72      0.94      0.81        51
  Donald Rumsfeld       0.88      0.88      0.88        25
    George W Bush       0.97      0.88      0.92        98
Gerhard Schroeder       0.88      0.71      0.79        21
      Hugo Chavez       0.85      0.73      0.79        15
Junichiro Koizumi       1.00      1.00      1.00        10
       Tony Blair       0.90      0.92      0.91        38

         accuracy                           0.87       270
        macro avg       0.89      0.85      0.86       270
     weighted avg       0.89      0.87      0.88       270
from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)
cm = cm.T

print(cm)
import seaborn as sns
sns.heatmap(data=cm, 
            square=True, 
            annot=True, 
            cbar=False,
            xticklabels=faces.target_names,
            yticklabels=faces.target_names
           );

plt.xlabel('True Labels')
plt.ylabel('Predicted Labels');

项目资源下载

详情请见基于支持向量机(SVM)的人脸识别-VenusAI (aideeplearning.cn) 


http://www.kler.cn/a/273317.html

相关文章:

  • 华为od技术一面
  • Spring Boot 配置文件启动加载顺序
  • 「Mac畅玩鸿蒙与硬件28」UI互动应用篇5 - 滑动选择器实现
  • GO语言基础(三)
  • git rebase 使用 - 【nolankywu】
  • 服务器新建用户
  • Flutter-仿淘宝京东录音识别图标效果
  • 【Vue3】自定义Input组件
  • HTML5语义化元素
  • 以太坊开发学习-solidity(三)函数类型
  • 项目性能优化—使用JMeter压测SpringBoot项目
  • 【Unity】详细介绍
  • 【K8S】docker和K8S(kubernetes)理解?docker是什么?K8S架构、Master节点 Node节点 K8S架构图
  • lv17 BOA服务器搭建 4
  • YOLOv8改进 | 图像去雾 | MB-TaylorFormer改善YOLOv8高分辨率和图像去雾检测(ICCV,全网独家首发)
  • 字节-安全研究实习生--一面
  • 愚人节礼物(C++)
  • 第二十五章 Web Gateway 管理页面概述 - 可用选项
  • 详解IP安全:IPSec协议簇 | AH协议 | ESP协议 | IKE协议
  • 容器部署对比:通用容器部署 vs 使用腾讯云容器镜像服务(TCR)部署 Stable Diffusion
  • 十、MySQL主从架构配置
  • 【STL源码剖析】【2、空间配置器——allocator】
  • 09|代理(上):ReAct框架,推理与行动的协同
  • npm install 报错
  • login登录界面
  • C#,图论与图算法,无向图(Graph)回环(Cycle)的不相交集(disjoint)或并集查找(union find)判别算法与源代码