You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用同一数据集实现nsprcomp时得到不同PC值的问题咨询

运行nsprcomp每次得到不同PC值的原因
  • 算法本身的迭代优化存在随机性:当你设置nneg=TRUE启用非负主成分分析模式时,该算法没有普通PCA的闭式解析解,需要通过迭代优化求解带非负约束的目标函数。算法默认对初始载荷矩阵做随机初始化,每次运行的初始值不同,大概率会收敛到不同的局部最优解,最终输出的PC值就会存在差异。
  • 遍历调用逻辑放大了随机性:你在for循环中每次计算i个主成分时,都是单独重新调用nsprcomp重新训练,每轮调用都会重新生成随机初始值,不会复用前一次的计算结果,进一步导致每次完整运行的输出都不固定。

复现固定结果的方案

在调用nsprcomp前设置固定随机种子即可,修改后的代码示例如下:

# 固定随机种子,数值可自定义,只要保持一致就能复现结果
set.seed(123)
nonpca<-nsprcomp(data,ncomp=i,nneg=TRUE,scale.= TRUE)
names(nonpca)
SumPC<-rowSums(nonpca$rotation)
w<-(SumPC)/sum(SumPC)

内容的提问来源于stack exchange,提问作者user1234556

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:06:04