我之前问过一个问题,但 duffymo 说不清楚,所以我将在这里再次发布。我正在使用 Jama api 进行 SVD 计算。我非常了解 jama 和 SVD。如果您的列多于行,则 Jama 不起作用。我有这种情况。我应该怎么办??有什么帮助吗?我也不能转置矩阵,因为它会产生错误的结果。谢谢。
PS:我在jama的帮助下计算LSI。我喜欢列(文档)和行(术语)
如果我理解正确,您正在尝试计算非方形矩阵的 SVD,并且您拥有仅适用于方形矩阵的库 JAMA?如果我对您的理解正确,那么您的问题的答案是显而易见的:获取一个为非方阵计算 SVD 的库。如果我没记错的话,Numerical Recipes 包含这样的算法,我希望您可以通过 Google 找到许多其他来源。
为什么不使用转置?如果 X = USV',则 X' = VS'U'。正确的?
转置你的矩阵。获取 U、S 和 V。将所有内容转回。
我现在这是一个很晚的答复。但我认为迟到总比没有好
但我知道jblas以有效的方式执行 svd。
由于您正在做 LSI,您可以使用 SVDLIBJ,它是 SVDLIBC 的 Java 等价物,它是可免费获得的最具可扩展性的 SVD 实现之一。S-Space 软件包已经为 SVDLIBJ设置了一个命令行工具。此外,如果更适合您的需求,您可以使用他们的 Matrix 库并避免使用命令行。