gpt4 book ai didi

R irlba 稀疏数据表示

转载 作者:行者123 更新时间:2023-12-04 09:30:44 25 4
gpt4 key购买 nike

如果我只是做错了,请告诉我...

我有一个 47,194 行、27 列的数字矩阵,其中有一些缺失值。我正在尝试使用 irlba 来分解矩阵。在之前的所有 R 项目中,我都使用 NA 来表示缺失数据。当我使用 irlba 时,出现数据丢失的错误。我如何指示缺少一个值,并且 irlba 在对矩阵进行因式分解时应忽略它?

注意:irlba 的文档不包含稀疏数据。每个元素都有一个值。有值为零的示例,但我不能这样做,因为它会考虑零值,而不是忽略该值。

请求的代码示例:

M = matrix(c(1,2,3,4,NA,6,7,8,9), nrow(3))
S = irlba(M,2)

我希望 irlba 将 NA 识别为缺失值并忽略它。相反,它失败并声明 M 包含缺失值。我已经尝试过 null、.、空值等...我相信有一个我以前从未见过的“忽略此元素”的特殊符号。

最佳答案

我发现 SVDmiss 执行相同的功能,而不是使用 irlba。给定一个简单的矩阵,例如:

M = matrix(c(1,2,3,4,NA,6,7,8,9), nrow=3)

SVDmiss 将为您提供 SVD 和填充的矩阵:

S = SVDmiss(M)

SVD 作为 $u、$d 和 $v 存储在 $svd 中。

S$svd$u
[,1] [,2] [,3]
[1,] -0.4796712 0.77669099 0.4082483
[2,] -0.5723678 0.07568647 -0.8164966
[3,] -0.6650644 -0.62531805 0.4082483
S$svd$d
[1] 1.684810e+01 1.068370e+00 5.039188e-17
S$svd$v
[,1] [,2] [,3]
[1,] -0.2148372 -0.8872307 -0.4082483
[2,] -0.5205874 -0.2496440 0.8164966
[3,] -0.8263375 0.3879428 -0.4082483

我可以通过乘以以下因子来重新创建 M: S$svd$u %% diag(S$svd$d) %% t(S$svd$v) [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9

但是,我不需要这样做,因为我 SVDfill 还在 $Xfill 中为我提供了推算/估计矩阵

S$Xfill
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9

此函数位于 SpatioTemporal 包中。以防万一您还没有安装包,请使用以下方法安装包:

install.package('SpatioTemporal')

然后在需要时加载它:

library(SpatioTemporal)

关于R irlba 稀疏数据表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55067710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com