计算Spark数据集上的Pearson Correlation

时间:2016-10-04 12:45:26

标签: java rdd apache-spark-ml pearson-correlation

我有一个包含双精度数组的JavaRDD。现在我想计算每个阵列之间的皮尔森系数。但是,如果我将rdd转换为向量并应用statistics.corr(),该函数将计算列,但我希望它计算行数。任何人都可以建议一种方法将我的数据转换为列,以便我可以应用corr()函数吗?

编辑:statistics.corr()函数需要javardd<矢量>作为输入。

1 个答案:

答案 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

如果您有多个行/记录,并且您希望每个行/记录与其他行相关,则矩阵可能太大而且两个选项可能都太低(如果根本不可能)