人脸识别——PCA降维

人脸识别——PCA降维

  • 人脸识别——PCA降维
  • 数据
  • PCA
  • model+predicted

数据

本实验采集82名同学每人三张共计246张图片,两张用于训练,一张用于测试

PCA

path1 = "E:\\code\\jupyter\\facedata" #文件夹目录
files1 = os.listdir(path1) #得到文件夹下的所有文件名称
labels = []
for file in files1: #遍历文件夹labels.append(file) #每个文件的文本存到list中j = 0
dataname = []
for i in range(0, 82):path2 = path1 + '\\' + labels[i] + '\\'files2 = os.listdir(path2)for file in files2:#获取每个人的图片path3 = path2 + filedataname.append(path3)#dataname是所有图片的路径j = j + 1
images = []
labels = []
for index,face in enumerate(dataname):image = cv2.imread(face, cv2.IMREAD_GRAYSCALE)image = cv2.resize(image, (128, 128))#image是一个128*128的矩阵images.append(image)labels.append(int(index))for i in range(246):labels[i] = int(labels[i]/3)#将图像每三个分为一组
# 图像数据转换特征矩阵
image_data = []
for image in images:data = image.flatten()image_data.append(data)
print(image_data[0].shape)
# 转换为numpy数组
X = np.array(image_data)
y = np.array(labels)
print(type(X))
print(X.shape)
# 画出特征矩阵
data = pd.DataFrame(X)
data
#划分训练集和测试集
x1 = []
y1 = []
x2 = []
y2 = []
for i in range(246):if i%3 != 0:x1.append(X[i])y1.append(y[i])else:x2.append(X[i])y2.append(y[i])x_train = np.array(x1)
y_train = np.array(y1)
x_test = np.array(x2)
y_test = np.array(y2)
print(x_train.shape, y_train.shape, x_test.shape, y_test.shape, sep = '\n')
#164用于训练,82用于测试

model+predicted

# 画出特征个数和所携带信息数的曲线图
explained_variance_ratio = []
for i in range(1,151): pca = PCA(n_components=i).fit(X)explained_variance_ratio.append(pca.explained_variance_ratio_.sum())
plt.plot(range(1,151),explained_variance_ratio)
plt.show()

# 选择维度100,训练PCA模型
pca = PCA(n_components = 100)
pca.fit(X)
#返回测试集和训练集降维后的数据集
x_train_pca = pca.transform(x_train)
x_test_pca = pca.transform(x_test)print(x_train_pca.shape)
print(x_test_pca.shape)
#数据降维到100

#使用svc模型训练预测
svc = SVC(C = 2, kernel='linear', class_weight='balanced')
svc.fit(x_train_pca, y_train)
#svc_pre = svc.predict(x_test)
svc.score(x_test_pca, y_test)
#准确率0.67

#使用“特征脸”模型
model=cv2.face.EigenFaceRecognizer_create()
model.train(x_train_pca, y_train)
label = []
confidence = []
for i in range(82):j, k = model.predict(x_test_pca[i])label.append(j)confidence.append(k)
print('pca', precision_score(y_test, label, average='micro'))
#准确率0.65


本实验主要目的是学习PCA的使用,最终的结果受使用数据的影响,不具参考价值

人脸识别——PCA降维相关推荐

  1. 基于PCA 人脸识别/人脸识别算法/人脸检测程序源码MATLAB ELM+PCA人脸识别 PCA人脸识别matlab代码 基于PCA算法的人脸识别

    1.基于PCA的人脸识别代码 2.MATLAB ELM+PCA人脸识别 2.基于PCA的人脸识别(matlab)(采用PCA算法进行人脸识别,通过抽取人脸的主要成 分,构成特征脸空间,识别时将测试图像 ...

  2. 人脸识别 pca matlab,基于PCA的人脸识别的Matlab实现代码

    基于PCA的人脸识别算法 --Matlab Face recognition Based on PCA 目录 人脸识别技术是基于人的脸部特征,对输入的人脸图象或者视频流 . 首先判断其是否存在人脸 , ...

  3. matlab中识别过程训练,人脸识别PCA算法matlab实现及详细步骤讲解

    %FaceRec.m %PCA人脸识别修订版,识别率88% %calc xmean,sigma and its eigen decomposition allsamples=[];%所有训练图像 fo ...

  4. PCA实验人脸库-人脸识别(四)

    一):人脸数据库 AR人脸库(包含50位男性和50位女性每人26张人脸共2600张人脸图片 ): http://www.datatang.com/data/46195 ORL人脸库(包含40个人的每人 ...

  5. 基于PCA的人脸识别_Matlab实现(个人研读之后的一些总结)

    以下是我在查阅相关文献之后的一些个人的总结,望大神们指正. 基于PCA的人脸识别 PCA简介 这是百度百科的解析: "对于一个训练集,100个对象模板,特征是10维,那么它可以建立一个100 ...

  6. 基于MATLAB实现PCA人脸识别

    文件大小:76M 代码行数:40行(主程序) 开发环境:Matlab2016.2018.2020 下载地址:点击下载 简要概述:基于MATLAB实现PCA人脸识别 PCA,即主成分分析,是一种数据降维 ...

  7. Python+Opencv实现简单PCA人脸识别

    基本原理:人脸识别-PCA特征脸_Python_萬仟网 上面那个链接被识别成不安全网址,谨慎访问吧 PCA,principal Component Analysis(主成成分分析方法) 1.基本原理 ...

  8. 【白话机器学习】算法理论+实战之PCA降维

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支 ...

  9. 白话机器学习算法理论+实战之PCA降维

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,比如我之前写过的一篇十大机器学习算法的小总结,在这简单的先捋一捋, 常见的机器学习算法: 监督学习算法:逻辑 ...

最新文章

  1. web 平台搭建-LNMP-源码包(CentOS-7)
  2. 下载vs2008 beta2的新方法
  3. 1.1 基本图像导入、处理和导出
  4. informatica 参数文件配置
  5. Visual Studio Code高效开发----自动保存设置方法
  6. MySQL相关常用命令
  7. spring java配置_Spring:使基于Java的配置更加优雅
  8. ※交换排序(1)——快速排序(quick sort)
  9. AngularJS scope 作用域的问题
  10. 史上最详细Sqlyog详细安装教程及使用
  11. 【word自带的公式编辑】如何删除公式里面的空行or对齐公式
  12. nltk.stem.WordNetLemmatizer()时报错BadZipFile(“File is not a zip file“)的解决方法
  13. style=扑克牌游戏大家应该都比较熟悉了,一副牌由54张组成,含3~A、2各4张,小王1张,大王1张。 牌面从小到大用如下字符和字符串表示(其中,小写joker表示小王,大写JOKER表示大
  14. [万字]java后端研发岗秋招常见面经总结
  15. 例行性工作排程 (crontab)
  16. 第四届橙瓜网络文学奖评选仙侠排行,辰东《遮天》竟然不是排第一?
  17. 准备VB或C#开发环境(Visual Studio)
  18. 全新的松松软文平台上线公告
  19. Python删除中文标点符号的方法
  20. 计算机毕业设计 SSM+Vue汽车租赁系统 网上租车系统 车辆租赁管理系统 在线租车平台Java Vue MySQL数据库 远程调试 代码讲解

热门文章

  1. 汉字转拼音—— js-pinyin 插件
  2. 通俗的解释什么是复合索引和最左原则
  3. 互联网快讯:北交所成立后首家精选层公司挂牌;东方创科新品重磅发布;快手与苏州市正式达成战略合作
  4. hbuilder X发布微信小程序失败的解决方法
  5. CSS实现开灯关灯的效果
  6. 线性代数(6): 初等矩阵和矩阵的可逆性
  7. Java文件下载相关设置
  8. 添加水印究竟多简单,python两三行代码实现批量添加~
  9. 弘辽科技:淘宝客服转化率多少正常?如何提高转化率?
  10. 教你手绘墙画表现|武汉手绘