wap建站系统php版,电子商务营销优势,想做个网站 怎么做,网站开发的选题意义及背景非负矩阵分解
非负矩阵分解是矩阵中所有元素均为非负数约束条件下的矩阵分解#xff0c;其基本思想#xff1a;给定一个非负矩阵V#xff0c;NMF能够找到一个非负矩阵W和一个非负矩阵H#xff0c;使得矩阵W和矩阵H的乘积近似等于矩阵V中的值。 矩阵#xff1a;被称为基础…非负矩阵分解
非负矩阵分解是矩阵中所有元素均为非负数约束条件下的矩阵分解其基本思想给定一个非负矩阵VNMF能够找到一个非负矩阵W和一个非负矩阵H使得矩阵W和矩阵H的乘积近似等于矩阵V中的值。 矩阵被称为基础图像数据相当于从原始矩阵中抽取出来的特征。H矩阵系数矩阵NMF广泛应用于图像分析文本挖掘和语音处理邻域。NMF矩阵分解优化目标最小化W矩阵H矩阵的乘积和原始矩阵之间的差别。 传统目标函数 基于KL散度的优化目标损失函数如下 在sklearn库中可以使用sklearn.decomposition.NMF加载NMF算法主要参数有 n_components用于指定分解后矩阵的单个维度k;init:W矩阵和H矩阵的初始化方式默认为nndsvdar。其他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_col2,3 #设置图像展示排列情况
n_componentsn_row*n_col #设置提取的特征数目
image_shape(64,64) #设置人脸数据图片大小
datasetfetch_olivetti_faces(shuffleTrue,random_stateRandomState(0))
facesdataset.data #加载数据打乱顺序#设置图像的展示方式
def plot_gallery(title,images,n_coln_col,n_rown_row):plt.figure(figsize(2.*n_col,2.26*n_row)) #创建图片指定大小plt.suptitle(title,size16) #设置标题字号大小for i,comp in enumerate(images):plt.subplot(n_row,n_col,i1) #选择画制的子图vmaxmax(comp.max(),-comp.min())plt.imshow(comp.reshape(image_shape),cmapplt.cm.gray,interpolationnearest, #对数值归一化并以灰度图形显示vmin-vmax,vmaxvmax)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_components6,whitenTrue)),(Non -negative components -NMF,#NMF和PCA实例化并存储在列表之中decomposition.NMF(n_components6,initnndsvda,tol5e-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()#可视化