我有一个包含双精度数组的JavaRDD。现在我要计算每个数组之间的皮尔逊系数。但是如果我将rdd转换为向量并应用statistics.corr(),该函数计算列,但我希望它计算行。谁能建议一种方法来转换我的数据列,以便我可以应用corr()函数?
编辑:statistics.corr()函数接受javardd <向量>作为输入。向量>
您可以尝试将每一行转换为RDD[Double]并比较它们的组合(手动或循环)
val seriesX: RDD[Double] = ... // row1
val seriesY: RDD[Double] = ... // row2 must have the same number of partitions and cardinality as seriesX
val correlation: Double = Statistics.corr(seriesX, seriesY, "pearson")
或者你可以尝试转置你的RDD并将结果RDD传递给corr(..) -这里有一些关于转置的想法-如何在Spark中转置RDD
如果你有多个行/记录,但是你想要每个与其他的矩阵的相关性可能太大,两个选项可能都太低(如果不可能的话)