from __future__ import print_function
from time import time #某些步骤需要计时,要用到这个模块
import logging #打印程序进展方面的信息的模块
import matplotlib.pyplot as plt #在程序最后把识别出的人脸绘制出来,看一下预测与实际的是否符合,要用到这个木块
from sklearn.cross_validation import train_test_split
from sklearn.datasets import fetch_lfw_people
from sklearn.grid_search import GridSearchCV
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
from sklearn.decomposition import RandomizedPCA
from sklearn.svm import SVC
print(__doc__)
#Display progress logs on stdout
logging.basicConfig(level= logging.INFO,format='%(asctime)s%(message)s')#basicConfig程序进展的信息
#################################################################################
#Download the data, if not already on disk and load it as numpy arrays
lfw_people = fetch_lfw_people(min_faces_per_person=70,resize=0.4) #因为是人脸识别,所以用到这个下载数据集的函数(人脸的数据集)(类型字典结构)
#introspect the images arrays to find the shapes(for plotting)
n_samples,h,w = lfw_people.images.shape #数据集上有多少个实例,hw
#for machine learning we use the 2 data directly(as relative pixel positions info is ignored by this model)
X = lfw_people.data #提取特征向量(每一个行是一个实例,每一个列是一样feature
n_features = X.shape[1]#返回特征向量的维度
#the label to predict is the id of the person
y = lfw_people.target #提取每个实例的label(类似字典结构)
target_names = lfw_people.target_names#返回类别中有谁的名字
n_classes = target_names.shape[0]#有多少个人需要区分
print("Total dataset size:")
print("n_samples:%d"%n_samples) #实例的个数
print("n_features:%d"%n_features)#特征向量的维度
print("n_classes:%d"%n_classes)#总共有多少类(多少人)
################################################################################
#Split into a training set and a test set using a stratified k fold
#Split into a training and testing set
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25)#把数据集分成训练集和测试集
#X_train,X_test 是一个矩阵,而y_train,y_test是对应的一个向量
################################################################################
#Compute a PCA(eigenfaces)on the face dataset(treated as unlabeled dataset):
#unsupervised feature extraction / dimensionality reduction
n_components = 150 #组成元素的数量(参数)
print("Extracting the top %d eigenfaces from %d faces"%(n_components,X_train.shape[0]))
t0 = time()
pca = RandomizedPCA(n_components=n_components,whiten=True).fit(X_train)#高维的向量降为低维的(对X_train中的特征向量进行降维)
print("Done in %0.3fs"%(time() - t0))
eigenfaces = pca.components_.reshape((n_components,h,w))#提取特征点
print("Prohecting the input data on the eigenfaces orthonormal basis")
t0 = time()
X_train_pca = pca.transform(X_train)#将高维转化为低维
X_test_pca = pca.transform(X_test)#将高维转化为低维
print("done in %0.3fs"%(time()-t0))
##############################################################################
#Train a SVM classification model
print("Fitting the classifier to the training set")
t0 = time()
param_grid = {'C':[1e3,5e3,1e4,5e4,1e5],#选用的参数值,多个量的尝试
'gamma':[0.0001,0.0005,0.001,0.005,0.01,0.1],}
clf = GridSearchCV(SVC(kernel='rbf',class_weight='auto'),param_grid)#对上面参数进行尝试,看哪组能产生更好的结果
clf = clf.fit(X_test_pca,y_train)#建模
print("done in %0.3fs"%(time()-t0))
print("Best estimator found by grid search:")
print(clf.best_estimator_)
###############################################################################
#Quantitative evaluation of the model quality on the test set
print("Predicting people's names on the test set")
t0 = time()
y_pred = clf.predict(X_test_pca)#对新来的测试集数据进行测试
print("done in %0.3fs"%(time() - t0))
print(classification_report(y_test,y_pred,target_names=target_names))#把预测的标签与真实的标签做比较
print(confusion_matrix(y_test,y_pred,labels=range(n_classes)))
################################################################################
#Qualitative evaluation of the predictions using matplotlib
def plot_gallery(images,titles,h,w,n_row=3,n_col=4):
"""Helper function to polt a gallery of portraits"""
plt.figure(figsize=(1.8 * n_col,2.4*n_row))
plt.subplots_adjust(bottom=0,left = .01,right = .99,top=.90,hspace=.35)
for i in range(n_row*n_col):
plt.subplot(n_row,n_col,i+1)
plt.imshow(images[i].reshape((h,w)),cmap=plt.cm.gray)
plt.title(titles[i],size = 12)
plt.xticks(())
plt.yticks(())
#plot the result of the prediction on a portion of the test set
def title(y_pred,y_test,target_names,i):
pred_name = target_names[y_pred[i]].rsplit('',1)[-1]
true_name = target_names[y_test[i]].rsplit('',1)[-1]
return 'predicted:%s\ntrue: %s'%(pred_name,true_name)
prediction_titles = [title(y_pred,y_test,target_names,i)
for i in range(y_pred.shape[0])]
plot_gallery(X_test,prediction_titles,h,w)
#plot the gallery of the most significative eigenfaces
eigenfaces_titles = ["eigenface %d"%i for i in range(eigenfaces.shape[0])]
plot_gallery(eigenfaces,eigenfaces_titles,h,w)
plt.show()
相关推荐
sklearn进行人脸数据集加载fetch_lfw_people()报错
sklearn进行人脸数据集加载fetch_lfw_people()报错 在使用sklearn自带人脸识别数据集进行训练,出现加载超时或失败 from sklearn.datasets import fetch_lfw_people # 读入数据 faces = fetch_lfw_people(min_faces_per_person=60) # 数据的规模 print(faces.targe...
【机器学习超详细】机器学习案例之SVM人脸识别技术应用 PCA降维 结果可视化 支持向量机
机器学习案例之SVM人脸识别技术应用 PCA降维 网格搜索 结果可视化 该实验可用SVM技术进行人脸识别,通过不断调参增加人脸识别技术的准确性。
[机器学习]机器学习笔记整理09- 基于SVM图像识别
前言前面介绍了SVM的基本概念和一般操作步骤,若如不理解请参考: [机器学习]机器学习笔记整理08- SVM算法原理及实现 下面来介绍一下,利用SVM进行图像识别.图像识别人脸识别是一项实用的技术。但是这种技术总是感觉非常神秘,在sklearn中看到了人脸识别的example,代码网址如下: http://scikit-learn.org/0.13/auto_examples/applicat
机器学习实践笔记(一)KNN
主要是参考机器学习实践(作者peter harrington) 优点:精度高,对异常值不敏感,无数据输入假定。 缺点:计算复杂度、空间复杂度高 适用数据:数值型和标称型 个人理解:数据型是连续数据,标称型离散数据。 KNN基本原理 写了一段时间了,没人看就没更新以后的。有兴趣或者没基础可以看看。 KNN的步骤 1、导入数据 import numpy as np import operator data =np.array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) labels
IEC 62056协议栈深度拆解:从物理层握手到应用层AARQ,一次完整的DLMS通讯抓包分析
本文深入解析IEC 62056协议栈(DLMS/COSEM)的全流程通信机制,从物理层握手到应用层AARQ建立,提供详细的抓包分析和实战指南。涵盖RS-485配置、HDLC帧解析、OBIS编码解读等核心内容,并附有常见故障排查技巧,助力开发者高效实现电能表数据采集。
告别软件轮询!用STM32G474的COMP比较器实现纳秒级硬件过压保护(CubeMX配置详解)
本文详细介绍了如何利用STM32G474的COMP比较器实现纳秒级硬件过压保护,通过CubeMX配置详解,展示了硬件比较器相比传统软件轮询方案在响应时间、CPU占用和可靠性等方面的显著优势。文章还提供了实战配置流程和优化技巧,帮助工程师快速构建高效的硬件保护系统。
SVM算法识别政治家面部识别
实验名称: SVM算法识别政治家面部识别 一、问题描述 国际政治家面部识别。在此数据集上,采用SVM算法实现: 给定以张图片,预测图片中的任务是否是这位政治家。 二、实验目的 学习SVM算法的算法。 三、实验内容 数据导入 from sklearn.datasets import fetch_lfw_people 数据预处理 lfw_people = fetch_lfw_people(min_faces_per_person=70, resize=0.4) X = lfw_people.data
Intel网卡固件烧录实战:eeupdate与bootutil命令完全解析
固件作为硬件设备底层运行的软件,其稳定性直接决定硬件功能的完整性。网卡固件一旦损坏,常表现为MAC地址丢失、PXE启动失效、NVM数据异常导致降速或掉线。维护这类问题,需借助Intel官方工具eeupdate与bootutil在UEFI Shell或DOS环境下执行底层烧录操作。eeupdate负责网卡的身份信息与NVM存储管理,可重置MAC、恢复固件镜像;bootutil则专管启动行为,支持PXE配置与Boot Agent升级。从环境准备、命令参数到故障恢复,掌握这两款工具能让运维人员在修复存量网卡、应对
python_sklearn机器学习算法系列之AdaBoost------人脸识别(PCA,决策树)
注:在读本文之前建议读一下之前的一片文章python_sklearn机器学习算法系列之PCA(主成分分析)------人脸识别(k-NearestNeighbor,KNN) 本文主要目的是通过一个简单的小例子和很短的代码来快速学习python 中的sklearn.ensemble的 AdaBoost这一模块的基本操作和使用,注意不是用python纯粹从头到尾自...
对雷达中相位补偿概念的一些理解
基于多普勒相位补偿的速度扩展方法和DBF测角,两者本质上都是对相位进行补偿。
UE5 蓝图节点图文大全(300+蓝图,9万字+)
本文采用虚幻5.2.1版本,以图文的方式对蓝图节点进行介绍,包括蓝图节点的输入输出参数解释,并有中英文节点名称可参考。
svm rbf人脸识别 yale_实操课——机器学习之人脸识别
SVM(Support Vector Machine)指的是支持向量机,是常见的一种判别方法。在机器学习领域,是一个有监督的学习模型,通常用来进行模式识别、分类以及回归分析。在n维空间中找到一个分类超平面,将空间上的点分类。一般而言,一个点距离超平面的远近可以表示为分类预测的确信或准确程度。SVM就是要最大化这个间隔值。而在虚线上的点便叫做支持向量Supprot Verctor。通过本任...
C#上位机多PLC多协议开发思路:10年老工控师拆解实战方案,避坑90%的问题(附代码框架)
是否连接成功数据地址(如“DB1.DBW0”“D100”“4x0001”)
【机器学习-3】SVM——人脸识别
http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html#sklearn.model_selection.train_test_split1.导入 from _future_ import print_functionPython提供了__future__模块,把下...
光伏微电网蓄电池储能控制系统设计及动态性能分析
本文构建了光伏微电网蓄电池储能控制系统的完整理论体系。在系统架构方面,提出了基于直流母线电压平衡的多时间尺度能量管理理论,建立了光伏发电单元的二阶物理模型和MPPT动态跟踪算法。针对蓄电池系统,设计了融合二阶RC等效电路与扩展卡尔曼滤波的SOC估计方法,误差控制在3%以内。双向DC-DC变换器采用状态空间平均建模方法,推导了小信号传递函数,为闭环控制提供理论基础。该体系实现了从瞬时功率平衡到长期能量调度的多层级协同控制,为微电网稳定运行提供了系统的解决方案。
【2026年阿里巴巴集团暑期实习- 4月25日-算法岗-第二题- 矩阵计数】(题目+思路+Java&C++&Python解析+在线测试)
摘要: 给定两个非负整数序列a和b,构造n×m矩阵C,其中C[i][j]=a[i]×b[j]。统计矩阵中元素≥k的数量。解法是先对数组b排序,然后对于每个a[i],若k=0则直接累加m;若a[i]=0且k>0则跳过;否则计算需要的最小b[j]值,在排序后的b中使用二分查找确定满足条件的元素数量。时间复杂度为O((n+m)log m),空间复杂度O(1)。代码实现了排序和二分查找的高效组合。
人脸识别之特征脸方法
特征脸技术是近期发展起来的用于人脸或者一般性刚体识别以及其它涉及到人脸处理的一种方法。首先把一批人脸图像转换成一个特征向量集,称为“Eigenfaces”,即“特征脸”,它们是最初训练图像集的基本组件。识别的过程是把一副新的图像投影到特征脸子空间,并通过它的投影点在子空间的位置以及投影线的长度来进行判定和识别。 将图像变换到另一个空间后,同一个类别的图像会聚到一起,不同类别的图像会聚力比较远,在
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
自动调参(GridSearchCV)及数据降维(PCA)在人脸识别中的应用
自动调参(GridSearchCV)及数据降维(PCA)在人脸识别中的应用
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
pscad IEEE标准系统搭建说明
pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。
机器学习(支持向量机-SVM)
一、深度学习的一般框架: 训练集->提取特征向量->结合一定算法(分类器:比如决策树,KNN)->得到结果二、向量机的概念: 如图所示,就是一个二维几何空间中的分类。中间那条直线就是这个分类的超平面。我们不难发现,用来确定这条直线其实只需要两条虚线上的三个点就够了,其他距离很远的点,虽然是训练样本,但是因为特征太明显,不会引起歧义,也对我们分类的超平面的确定意义并不大。所以只要找到最靠近分类
华为的C语言编程规范.pdf
华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。
SVM人脸识别技术 自己学着郭亮老师写的 感觉挺不错的
#-- coding:utf-8 -- from future import print_function#解决python2中的print问题 from time import time#记录每段处理花费的时间 import logging#记录进展的状况 import matplotlib.pyplot as plt from sklearn.model_selection import t...
python_sklearn机器学习算法系列之PCA(主成分分析)------人脸识别(k-NearestNeighbor,KNN)
本文主要目的是通过一个简单的小例子和很短的代码来快速学习python 中的sklearn.decomposition 的 PCA(主成分分析)这一模块的基本操作和使用,注意不是用python纯粹从头到尾自己构建PCA(主成分分析),既然sklearn提供了现成的我们直接拿来用就可以了,当然其原理十分重要,下面简单介绍: (关于PCA更多数学上面的推导可以查看笔者另一篇博客http...
6.4 支持向量机应用(下)
利用SVM进行人脸识别实例: from __future__ import print_functionfrom time import time import logging import matplotlib.pyplot as pltfrom sklearn.cross_validation import train_test_split from sklearn.datasets impor
PCA+SVM人脸识别
本例子来自sklearn的demo,我自己在运行demo时候遇到点麻烦,故阅读了下源码,在此总结一些知识点。首先要说明的是如果自己有先下载好的lfw人脸数据集,那么需要将人脸数据集放在lfw_home路径下,这也是因为datasets.fetch_lfw_people在加载数据集的源码的一个小瑕疵。如下图: PCA+SVM实现人脸识别PCA主要是通过奇异值分解将数据映射到低纬度的空间(正交去相关)
机器学习笔记——SVM(2)
SVM+PCA 人脸识别 #!/usr/bin/python # -*- coding: utf-8 -*- from __future__ import print_function import matplotlib.pyplot as plt import logging logging.basicConfig() from sklearn.model_selection import tra
7856



被折叠的 条评论
为什么被折叠?



