我想计算SVD,但我没有为此找到好的java库。现在,我在hashmap中有数据存储,因为矩阵不适合内存,因为大小大约是400 000 X 10 000,而且大多数都是0.我试过MTJ,JBLAS,Jama和其他人但是大多数他们不支持稀疏矩阵或太慢。我需要这个计算最多2-3分钟。有人可以推荐我吗? 我也读过R中的irbla,但是可以将我的数据从java发送到R,进行计算并将其发送回我的java程序吗?
答案 0 :(得分:2)
我在尝试将非负矩阵分解(NNMF)和概率潜在语义分析应用于大型稀疏术语 - 文档矩阵时遇到了类似的问题。我尝试了Jblas 1 和Jama 2 ,但我最终使用了Matlab。因为我用Java编写整个应用程序,所以我最终通过Matlab Runtime Compiler (MRC)用Java来调用Matlab。
怎么做:
Matlab有一个名为Matlab Builder JA的功能。使用此工具生成一个.jar文件,该文件包含您的matlab代码,然后可以由您的java程序调用。这个.jar需要MRC才能工作。
1 Jblas比Jama快得多,但我遇到了问题,无法用64位的jdk运行。
2 Jama使用了doube[][]
,这导致了记忆问题。
可能上述情况发生了变化,因为我正在重新回到2012年7月,现在还没有清晰的形象。 / p>