如何在 Java 中打印皮尔逊矩阵的所有列

How to print all the columns of the pearson Matrix in Java

我正在处理一个问题(与这里 相同)但是在 Java(和 Spark MLLib)中。

因此,使用以下代码创建了一个皮尔逊矩阵。我想打印 Pearson 矩阵的所有 13 columns/fields,但它真的很混乱。

密码是:

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)

我得到的结果是:

皮尔逊相关矩阵:

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 分配给数据集,则显示(假))仅显示前 3 列和“总共 13 个”。

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

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

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();
   }