Java Mahout中的Lanczsos特征向量

Java Mahout中的Lanczsos特征向量,java,hadoop,mahout,Java,Hadoop,Mahout,我正在Java的Mahout尝试机器学习。我已经用MySQL下载了我想要的所有数据。当我的类型为“SparseRowMatrix”的变量完成了所有的计算和重新排列时,我陷入了困境。我根本不知道如何调用我认为合适的两种方法中的任何一种: 1) org.apache.mahout.math.decomposer.lanczos.LanczosSolver 2) org.apache.mahout.math.hadoop.decomposer.DistributedLanczosSolver 在这一点

我正在Java的Mahout尝试机器学习。我已经用MySQL下载了我想要的所有数据。当我的类型为“SparseRowMatrix”的变量完成了所有的计算和重新排列时,我陷入了困境。我根本不知道如何调用我认为合适的两种方法中的任何一种:

1)
org.apache.mahout.math.decomposer.lanczos.LanczosSolver

2)
org.apache.mahout.math.hadoop.decomposer.DistributedLanczosSolver


在这一点上,任何建议都是有用的

DistributedLanczosSolver
实现了
工具
接口,因此您可以将其作为常规Hadoop作业运行,例如:

hadoop jar $MAHOUT_HOME/mahout-examples-0.5-job.jar org.apache.mahout.math.hadoop.decomposer.DistributedLanczosSolver --input /path/to/input --output /path/to/output --numCols 42 --numRows 42 --cleansvd "true" --rank 5
您也可以使用以下命令直接从Java调用:

ToolRunner.run(new DistributedLanczosSolver().job(), args);

或者,如果您不需要以分布式方式执行此操作,
LanczosSolver.solve
方法就是您要寻找的方法,您必须将矩阵、特征向量和特征值传递给它。它使用Lanczos算法在引擎盖后面做了一些复杂的事情,我无法解释,因此我建议您直接查看以获得更清晰的信息。

非常好的答案。我想我当时还不清楚。我希望只传递矩阵,以便得到特征向量和特征值。这仍然是相同的基本方法吗?