我正在处理一个问题(与此处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的新手。请帮忙!非常感谢你提前!!!
答案 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();
}