2

我正在尝试在 Java 的 Mahout 中进行机器学习。我已经用 MySQL 下载了我想要的所有数据。我被卡住的地方是当我的“SparseRowMatrix”类型的变量完成所有计算和重新排列时。我根本不明白如何调用我认为合适的两种方法中的任何一种:

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

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

在这一点上,任何建议都是有帮助的!

4

1 回答 1

3

DistributedLanczosSolver实现该Tool接口,因此您可以将其作为常规 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 算法在幕后做了一些复杂的事情,所以我建议您直接查看源代码以获得更清晰的内容。

于 2013-05-21T18:15:02.400 回答