#非负矩阵分解(NMF):

'''

1.NMF 人脸数据特征提取

目标:已知Olivetti 人脸数据供400个,每个数据64*64,

由于NMF分解得到的W矩阵相当于从原始矩阵中提取的特征,

那么就可以使用NMF对400个人的人脸进行特征提取。

2.通过设置k的大小可以设置提取的特征数目,在本实验中k设置为6,随后提取特征以图像的形式展示出来

'''

import matplotlib.pyplot as plt

from sklearn import decomposition #导入算法

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) #设置人脸数据图片大小

dataset=fetch_olivetti_faces(shuffle=True,random_state=RandomState(0))

faces=dataset.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=16) #设置标题,字号大小

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.93,0.)#子图间隔调整

estimators=[('Eigenfaces -PCA using randomized SVD',

decomposition.PCA(n_components=6,whiten=True)),

('Non -negative components -NMF',#NMF和PCA实例化并存储在列表之中

decomposition.NMF(n_components=6,init='nndsvda',

tol=5e-3))]

for name ,estimator in estimators:

estimator.fit(faces) #NMF和PCA分别调用提取特征

components_=estimator.components_

#获取特征

plot_gallery(name,components_[:n_components])

#按照国定格式进行排列

if __name__=="__main__":

plt.show()#可视化

nmf算法 python_python-非负矩阵分解-NMF相关推荐

  1. nmf算法 python_非负矩阵分解(NMF)及一个小实例

    最近在做一道题,题目的要求如下图,其中如2-digits这张图,图中每两个数字构成一个子图(横着看,比如第一行为41,43,42,14,12,14,23,41),对应的右图为左图的一个主成分元素,即2 ...

  2. 文本主题模型之非负矩阵分解(NMF)

    1. 非负矩阵分解(NMF)概述 非负矩阵分解(non-negative matrix factorization,以下简称NMF)是一种非常常用的矩阵分解方法,它可以适用于很多领域,比如图像特征识别 ...

  3. 【机器学习】(十七)非负矩阵分解NMF:人脸图像特征提取、用特征排序;还原混合信号

    非负矩阵分解(NMF)是一种无监督学习算法,目的在于提取有用的特征(可以识别出组合成数据的原始分量),也可以用于降维,通常不用于对数据进行重建或者编码. 与PCA相同,NMF将每个数据点写成一些分量的 ...

  4. 非负矩阵分解NMF(1): 非调包python实现

    文章目录 1. 矩阵分解(Matrix Factorization): 1.1 公式推导 1.2 代码实现 1.3 在图像数据下的效果 2. 非负矩阵分解(Non-negative Matrix Fa ...

  5. 详解非负矩阵分解(NMF)及其在脑科学中的应用

    非负矩阵分解及其在脑科学中的应用 基本原理 确定最优因子数量 代码实现 非负矩阵分解与主成分分析的区别 非负矩阵分解在脑科学中的应用 应用一:神经发育模式:T2w/T1w比值映射的非负矩阵分解(NMF ...

  6. 推荐算法——非负矩阵分解(NMF)

    1. 矩阵分解回顾 在博文推荐算法--基于矩阵分解的推荐算法中,提到了将用户-商品矩阵进行分解,从而实现对未打分项进行打分.矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积.对于上述的用户-商品矩阵 ...

  7. nmf算法 python_Python-Sciki中的NMF聚类方法

    我正在为NMF文本数据集群实现一个Python脚本.在我的工作中,我使用的是Scikit NMF实现,然而据我所知,Scikit NMF更像是分类方法而不是聚类方法.在 我开发了一个简单的脚本来处理一 ...

  8. python-非负矩阵分解-NMF

    非负矩阵分解 非负矩阵分解是矩阵中所有元素均为非负数约束条件下的矩阵分解,其基本思想:给定一个非负矩阵V,NMF能够找到一个非负矩阵W和一个非负矩阵H,使得矩阵W和矩阵H的乘积近似等于矩阵V中的值. ...

  9. Non-Negative Matrix Factorization 非负矩阵分解(NMF)

    Non-Negative Matrix Factorization 非负矩阵分解(NMF) 简介及基本思想 1999年由D.D.Lee和H.S.Seung提出的新的矩阵分解思想,在矩阵中所有元素均为非 ...

最新文章

  1. php横排代码,20行代码原生js实现文字横向轮播
  2. 再见,Spark!Flink已成气候!
  3. linux组的管理命令,linux 用户和组管理命令(示例代码)
  4. android生命周期_Android活动生命周期– 7个阶段和功能
  5. android官方素材,android Studio 中文社区
  6. mysql 并发 加锁_MySQL的并发控制与加锁分析
  7. 17年,寻找出路的一年
  8. uni-app 引入本地iconfont的正确姿势以及阿里图标引入
  9. 电视直播源码2.0-全站HTML文件
  10. 盐城工学院c语言实验报告簿,盐城工学院单片机实验指导书.doc
  11. 十进制转换成十二进制
  12. 光纤节点 劫持检测,细数宽带运营商常见的几种http劫持行为
  13. DDD | 领域驱动设计初探
  14. WNMP环境源码安装
  15. 蓝桥杯基础之16进制、10进制、8进制、2进制换算总结
  16. win10系统安装到服务器失败怎么解决,windows10安装失败怎么办?解决win10安装失败的方法教程[多图]...
  17. MATLAB快速获取二维图像/矩阵最大值和位置
  18. NVIDIA英伟达jetson xavier nx怎么进入Recovery模式
  19. PIE-Label样本标绘软件
  20. 解决:springmvc中接收date数据问题

热门文章

  1. C语言_有限状态机(FSM)
  2. 《惢客创业日记》2021.05.24-28(周一)惢客的市场价值(下)
  3. 浮点型/整型转字符串
  4. CentOS 6 root口令破解
  5. 云联惠情况说明_经济状况良好时,云仍然有意义吗?
  6. 伪元素在父元素中居中_花生种植使用哪些中微量元素?
  7. cocos2d-x-3.3-022-仿微信飞机大战-开篇介绍
  8. 自定义Tomcat启动脚本
  9. CSS stylus 中 hover 触发子元素
  10. win10下使用ISE软件时PlanAhead闪退问题