我有一个包含双精度数组的JavaRDD。现在我想计算每个阵列之间的皮尔森系数。但是,如果我将rdd转换为向量并应用statistics.corr(),该函数将计算列,但我希望它计算行数。任何人都可以建议一种方法将我的数据转换为列,以便我可以应用corr()函数吗?
编辑:statistics.corr()函数需要javardd<矢量>作为输入。
答案 0 :(得分:0)
你可以尝试将每一行转换为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(..) - 关于在此转置的一些想法 - How to transpose an RDD in Spark
如果您有多个行/记录,并且您希望每个行/记录与其他行相关,则矩阵可能太大而且两个选项可能都太低(如果根本不可能)