非负矩阵分解(NMF,Non-negative Matrix Factorization)

非负矩阵分解是在矩阵中所有元素均为非负数约束条件之下的矩阵分解方法
基本思想:给定一个非负矩阵V,NMF能够找到一个百负矩阵W和一个非负矩阵H,使得矩阵W和H的乘积近似等于矩阵V中的值V=W*H
W矩阵:基础图像矩阵,相当于从原矩阵V中抽取出来的特征
V矩阵:系数矩阵
NMF能够广泛应用于图像分析、文本挖掘和语音等领域

矩阵分解优化目标:最小化W矩阵和H矩阵的乘积和原始矩阵之间的差别

http://blog.csdn.net/acdreamers/article/details/44663421/

主要参数:

dp.NMF(n_components=None,init=None,solver=‘cd’,beta_loss=‘frobenius’,tol=1e-4,
max_iter=200,random_state=None,alpha-0.,l1_ratio=0.,verbose=0,shuffle=False)
n_components:用于指定分解后矩阵的单个维度k
init:W矩阵和H矩阵的初始化方式,默认为’nndsvdar’

NMF人脸数据特征提取

目标:已知Olivetti人脸数据共400个每个数据是64*64大小,由于NMF分解得到的W矩阵相当于从原始矩阵中提取的特征,
那么就可以使用NMF对400个人脸数据提行特征提取
通过设置k的大小,设置提取的特征数目,在本实验中设置k=6,随后将提取的特征以图像的形式展示出来

人脸特征提取实例:

import sklearn.decomposition as dp
import matplotlib.pyplot as plt
from sklearn.datasets import fetch_olivetti_faces
from numpy.random import RandomState #创建随机种子
n_row,n_col=2,3
n_components=n_row*n_col
image_shape=(64,64)
datasets=fetch_olivetti_faces(shuffle=True,random_state=RandomState(0))
#dataset=fetch_olivetti_faces(data_home=None,shuffle=False,random_state=0,download_if_missing=True)
faces=datasets.data #加载工打开数据def plot_gallery(title,images,n_col=n_col,n_row=n_row):plt.figure(figsize=(2.*n_col,2.26*n_row)) #创建图片,并指定图片大小plt.suptitle(title,size=18) #设置标题及字号大小for i,comp in enumerate(images):plt.subplot(n_row,n_col,i+1) #选择绘制的子图vmax=max(comp.max(),-comp.min())plt.imshow(comp.reshape(image_shape),cmap=plt.cm.gray,interpolation='nearest',vmin=-vmax,vmax=vmax) #对数值归一化,并以灰度图形式显示plt.xticks(())plt.yticks(()) #去除子图的坐标轴标签plt.subplots_adjust(0.01,0.05,0.99,0.94,0.04,0.) #对子图位置及间隔调整plot_gallery('First centered Olivetti faces',faces[:n_components])
estimators=[('Eigenfaces-PCA using randomized SVD',dp.PCA(n_components=6,whiten=True)),('Non-negative components - NMF',dp.NMF(n_components=6,init='nndsvda',tol=5e-3))] #NMF和PCA实例化for name,estimator in estimators: #分别调用PCA和NMFestimator.fit(faces) #调用PCA或NMF提取特征components_=estimator.components_ #获取提取的特征plot_gallery(name,components_[:n_components]) #按照固定格式进行排列
plt.show()

学习目标:https://blog.csdn.net/qq_32892383/article/details/91347164

python sklearn NMF人脸识别相关推荐

  1. python简单的人脸识别系统(PCA+逻辑回归)

    python简单的人脸识别系统(PCA+逻辑回归) 数据集:ORL人脸库 特征提取:PCA降维,将112*92降成30 分类器:逻辑回归 ** 代码: from tkinter import * fr ...

  2. python好学吗 小木虫-25行Python代码完成人脸识别

    以下是Shantnu Tiwari的客座文章,作者有着在底层编程和嵌入式领域十年的工作经验.在发现Python语言之前的几年时间里,Shantnu Tiwari一直忍受着C/C++语言编程的不便,但P ...

  3. 基于Python的开源人脸识别库:离线识别率高达99.38%

    基于Python的开源人脸识别库:离线识别率高达99.38% 2019年04月18日 18:13:18 AI终结者 阅读数 1233 项目地址:https://github.com/ageitgey/ ...

  4. 人脸识别python face_recognize_【python+face_recognition】人脸识别初始

    [python+face_recognition]人脸识别初始 发布时间:2018-09-01 12:03, 浏览次数:366 , 标签: python face recognition face_r ...

  5. Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38%

    Python人脸识别教程 - 基于Python的开源人脸识别库:离线识别率高达99.38% 仅用 Python 和命令行就可以实现人脸识别的库开源了.该库使用 dlib 顶尖的深度学习人脸识别技术构建 ...

  6. Python简单实现人脸识别检测, 对照片进行评分

    大家好,今天和大家说说如何用Python简单实现人脸识别检测, 对照片进行排名,看看自己有多漂亮. [开发环境]: Python 3.8 Pycharm 2021.2 [模块使用]: requests ...

  7. 【Python】基于人脸识别的智能考勤系统(Pyqt5+MySQL+Opencv) [PC端部分-已附源码]

    [Python]基于人脸识别的考勤系统 [PC端部分] 一.项目简介 本项目编程语言Python3.6,编程工具pycharm,其他工具QT Designer.Navicat,表单信息保存在本地MyS ...

  8. python模块cv2人脸识别_手把手教你使用OpenCV,Python和深度学习进行人脸识别

    使用OpenCV,Python和深度学习进行人脸识别 在本教程中,你将学习如何使用OpenCV,Python和深度学习进行面部识别.首先,我们将简要讨论基于深度学习的面部识别,包括"深度度量 ...

  9. Python+Tensorflow+Opencv人脸识别(任意数量人脸)

    Python+Tensorflow+Opencv的人脸识别 简单的人脸识别 准备工作 开始--先获取必要的人脸图像 训练--分类吧 识别大脸 简单的人脸识别 一直想做机器学习的东东,最近由于工作的调整 ...

最新文章

  1. C#调用控制面板选项
  2. MySQL库目录下db.opt文件的作用
  3. 统计学习方法|感知机原理剖析及实现
  4. spring-security认证授权
  5. Red5 简单安装指南
  6. Linux进阶之路————CentOS网络配置
  7. [RN] React Native 定义全局变量
  8. python+sklearn利用特征文件来训练和测试模型并使用joblib方法持久化存储模型
  9. 使用py 和flask 实现的服务器系统目录浏览,日志文件实时显示到网页的功能
  10. 关于微信卡券网页跳转链接能力的下线
  11. 中国大数据风控企业揭秘系列之航天信息
  12. 通过HDMI获取显示器EDID数据
  13. php oa系统 缺点,PHPOA:被低估的OA自动化系统
  14. 目标检测经典论文——YOLOv3论文翻译(纯中文版):YOLOv3:增量式的改进(YOLOv3: An Incremental Improvement)
  15. SQL Server(六)-Transact-SQL语言
  16. 如何使用ffmpeg分离视频和音频t
  17. 呼叫中心的软电话架构
  18. mac搭建win10虚拟机并对磁盘分区
  19. markdown写出项目目录结构
  20. 华为首个芯片工厂封顶!

热门文章

  1. win10怎么用记事本编译C语言,大师教你win10系统使用记事本打开文件的设置教程...
  2. 【Java代码】两个数组拼接成一个数组
  3. 2023年6月PMP®项目管理认证招生简章
  4. 2022千乐微云技术学习任务计划
  5. python 逻辑回归准确率是1_机器学习之利用Python进行逻辑回归分析
  6. 做什么生意是最稳定的呢?
  7. 如何将3dmax软件的界面设置成经典模式?-图文详解
  8. 计蒜客 Python练习
  9. 利用echart和echart-gl绘制江苏省的地图之一
  10. redis介绍, redis安装, redis持久化, redis数据类型