我有一个 JavaRDD,其中包含 double 组。现在我想计算每个数组之间的 PIL 逊系数。但是,如果我将 rdd 转换为 vector 并应用 stats.corr(),该函数会计算列,但我希望它计算行。谁能建议一种将我的数据转换为列的方法,以便我可以对其应用 corr() 函数?
编辑:statistics.corr() 函数采用 javardd < vector > 作为输入。
最佳答案
您可以尝试将每一行转换为 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
如果您有多个行/记录,并且您希望每个行/记录与其他行/记录之间存在相关性,则矩阵可能太大,并且两个选项可能都太低(如果根本不可能)
关于java - 计算 Spark 数据集上的 Pearson 相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39852717/