我有RowMatrix而我的问题是,我如何通过指标来操纵它?这个问题非常适合这个问题:
Matrix Operation in Spark MLlib in Java
最后,我需要的是将Matrix与优秀的类库结合起来。目前我无法操纵这个对象。
答案 0 :(得分:1)
由于RowMatrix
的JavaDocs表示
:: Experimental ::表示一个面向行的分布式矩阵,没有有意义的行索引。
行上没有排序。您可以通过调用breeze.linalg.DenseMatrix
从中获取toBreeze
,但您无法保证行的排序。它们只是在到达主控器时插入到结果矩阵中。这意味着此操作的结果可能会不时变化。
如果您需要toBreeze
操作的确定性结果,则必须使用IndexedRowMatrix
。每行都分配了一个行索引,用于构建breeze.linalg.DenseMatrix
。
然后,您可以使用建议的here解决方案,即
import no.uib.cipr.matrix.DenseMatrix;
// ...
IndexedRowMatrix U = svd.U();
DenseMatrix U_mtj = new DenseMatrix((int) U.numCols(), (int) U.numRows(), U.toBreeze().toArray$mcD$sp(), true);
// From there, matrix operations are available on U_mtj