如何在Java中打印pearson Matrix的所有列

时间:2018-03-27 11:36:52

标签: java apache-spark matrix apache-spark-mllib pearson-correlation

我正在处理一个问题(与此处How to print all the columns of a Matrix相同),但在Java(和Spark MLLib)中。

因此,使用下面的代码创建一个皮尔森矩阵。我想要打印Pearson矩阵的所有13个列/字段,但它真的很混乱。

代码是:

Row r1=Correlation.corr(output,"intensity").head();
System.out.println("Pearson correlation matrix:\n" + r1.get(0).toString());

并且r1架构是:

root
|-- pearson(intensity): matrix (nullable = false)

我得到的结果是:

Pearson相关矩阵:

1.0                  -1.000000000000013  -0.9999999999999991  ... (13 total)
-1.000000000000013   1.0                 1.0000000000000069   ...
-0.9999999999999991  1.0000000000000069  1.0                  ...
-0.9999999999999983  0.999999999999994   1.0000000000000009   ...
-0.9999999999999983  0.999999999999994   1.0000000000000009   ...
-0.9999999999999983  0.999999999999994   1.0000000000000009   ...
-1.0000000000001108  1.0000000000000644  1.000000000000129    ...
-0.9999999999999983  0.999999999999994   1.0000000000000009   ...
1.0                  -1.000000000000005  -0.9999999999999989  ...
-1.0000000000000029  1.0000000000000056  1.0000000000000009   ...
-1.0000000000000036  1.000000000000003   1.0000000000000018   ...
-0.9999999999999999  1.000000000000003   1.0000000000000002   ...
0.9999999999999989   -1.000000000000012  -0.9999999999999987  ...

基本上,我认为行r1中有一个矩阵(可能是DenseMatrix)。如何访问此矩阵以及如何打印所有13列?

使用“head()”(如果我将r1分配给数据集,则显示(false))仅显示前3列和“13 total”。

我是Spark-Java的新手。请帮忙!非常感谢你提前!!!

1 个答案:

答案 0 :(得分:0)

经过多次努力......我意识到它要简单得多......!只是发布答案......数据集的第一行中有一个矩阵。您所要做的就是访问第一行,然后访问Matrix。

Row r1 = Correlation.corr(output, "intensity").head();
Matrix r2= r1.getAs(0);
   for (int i = 0; i < r2.numRows(); i++) {
       for (int j = 0; j < r2.numCols(); j++) {
            System.out.print(r2.apply(i,j)+"  ");
       }
       System.out.println();
   }