nmf算法 python_python-非负矩阵分解-NMF
#非负矩阵分解(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相关推荐
- nmf算法 python_非负矩阵分解(NMF)及一个小实例
最近在做一道题,题目的要求如下图,其中如2-digits这张图,图中每两个数字构成一个子图(横着看,比如第一行为41,43,42,14,12,14,23,41),对应的右图为左图的一个主成分元素,即2 ...
- 文本主题模型之非负矩阵分解(NMF)
1. 非负矩阵分解(NMF)概述 非负矩阵分解(non-negative matrix factorization,以下简称NMF)是一种非常常用的矩阵分解方法,它可以适用于很多领域,比如图像特征识别 ...
- 【机器学习】(十七)非负矩阵分解NMF:人脸图像特征提取、用特征排序;还原混合信号
非负矩阵分解(NMF)是一种无监督学习算法,目的在于提取有用的特征(可以识别出组合成数据的原始分量),也可以用于降维,通常不用于对数据进行重建或者编码. 与PCA相同,NMF将每个数据点写成一些分量的 ...
- 非负矩阵分解NMF(1): 非调包python实现
文章目录 1. 矩阵分解(Matrix Factorization): 1.1 公式推导 1.2 代码实现 1.3 在图像数据下的效果 2. 非负矩阵分解(Non-negative Matrix Fa ...
- 详解非负矩阵分解(NMF)及其在脑科学中的应用
非负矩阵分解及其在脑科学中的应用 基本原理 确定最优因子数量 代码实现 非负矩阵分解与主成分分析的区别 非负矩阵分解在脑科学中的应用 应用一:神经发育模式:T2w/T1w比值映射的非负矩阵分解(NMF ...
- 推荐算法——非负矩阵分解(NMF)
1. 矩阵分解回顾 在博文推荐算法--基于矩阵分解的推荐算法中,提到了将用户-商品矩阵进行分解,从而实现对未打分项进行打分.矩阵分解是指将一个矩阵分解成两个或者多个矩阵的乘积.对于上述的用户-商品矩阵 ...
- nmf算法 python_Python-Sciki中的NMF聚类方法
我正在为NMF文本数据集群实现一个Python脚本.在我的工作中,我使用的是Scikit NMF实现,然而据我所知,Scikit NMF更像是分类方法而不是聚类方法.在 我开发了一个简单的脚本来处理一 ...
- python-非负矩阵分解-NMF
非负矩阵分解 非负矩阵分解是矩阵中所有元素均为非负数约束条件下的矩阵分解,其基本思想:给定一个非负矩阵V,NMF能够找到一个非负矩阵W和一个非负矩阵H,使得矩阵W和矩阵H的乘积近似等于矩阵V中的值. ...
- Non-Negative Matrix Factorization 非负矩阵分解(NMF)
Non-Negative Matrix Factorization 非负矩阵分解(NMF) 简介及基本思想 1999年由D.D.Lee和H.S.Seung提出的新的矩阵分解思想,在矩阵中所有元素均为非 ...
最新文章
- php横排代码,20行代码原生js实现文字横向轮播
- 再见,Spark!Flink已成气候!
- linux组的管理命令,linux 用户和组管理命令(示例代码)
- android生命周期_Android活动生命周期– 7个阶段和功能
- android官方素材,android Studio 中文社区
- mysql 并发 加锁_MySQL的并发控制与加锁分析
- 17年,寻找出路的一年
- uni-app 引入本地iconfont的正确姿势以及阿里图标引入
- 电视直播源码2.0-全站HTML文件
- 盐城工学院c语言实验报告簿,盐城工学院单片机实验指导书.doc
- 十进制转换成十二进制
- 光纤节点 劫持检测,细数宽带运营商常见的几种http劫持行为
- DDD | 领域驱动设计初探
- WNMP环境源码安装
- 蓝桥杯基础之16进制、10进制、8进制、2进制换算总结
- win10系统安装到服务器失败怎么解决,windows10安装失败怎么办?解决win10安装失败的方法教程[多图]...
- MATLAB快速获取二维图像/矩阵最大值和位置
- NVIDIA英伟达jetson xavier nx怎么进入Recovery模式
- PIE-Label样本标绘软件
- 解决:springmvc中接收date数据问题