R语言编写NMF,其中迭代部分注释

本文通过R语言展示了非负矩阵分解(NMF)的迭代公式,旨在帮助读者理解算法流程。代码中包含了连接矩阵的构建和迭代控制的设定,适合通过打印学习。参考了'Functional Biogeography of Ocean Microbes Revealed through Non-Negative Matrix Factorization'一文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

认为,学算法,打印下来,一个一个看是最直观的,本来准备把NMF,每个函数都注解一遍,结果今天自己没事,看了下,乍一看一大片,用一个旁观者的视角看,我并不想继续读下去。所以代码给大家。因为实验室有打印机,我打印看,很快就知道什么流程了,纸上谈兵,上战场就~~~各种弱爆,想想就想哭。(不知道链接是不是一直有效,如果失效在Functional Biogeography of Ocean Microbes Revealedthrough Non-Negative Matrix Factorization 这篇文章里面)

# Non-negative matrix factorization

#
# Args:
# difcon: indicates how difference between the similarity matrice in two iteration.
#too small, in many times it has not convergenced in 2000 steps 
#too large, because it convergenced in 200 steps
#may try to see results on 1e-5,-6,-7,-8,-9,-10, to see if it is sensentive on convergence criteria
#非负矩阵分解
##参数:
#difcon:表示两次迭代中相似度矩阵之间的差异。
#too很小,在很多时候它还没有在2000步骤收敛
#too很大,因为它收敛了200步
#可能试图在1e-5,-6,-7,-8,-9,-10上看到结果,看它是否是敏感的在收敛准则上

#参数含义 Z:为输入矩阵;   K:为准备分类的个数;  method = "lee":表示选用第一个提出NMF分解lee作者的基于欧式距离来分解;  num.iter = 2000:迭代次数;  seed = 10:初始化种子编号
NMF <- function(Z, k, method = "lee", eps = 1e-16, stopconv = 40, num.iter = 2000, difcon = 1e-10, ifseed = TRUE, seed = 10) {
n <- nrow(Z)              #输入矩阵Z的行数
m <- ncol(Z)               #输入矩阵Z的列数
# Connectivity matrix   #关联矩阵(用来判断两次迭代前后,矩阵改变量的大小)
cons <- matrix(rep(0, m*m),ncol = m, nrow = m)   &
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值