2016-10-04 2 views
1

J'ai un JavaRDD qui contient des tableaux de doubles. Maintenant, je veux calculer le coefficient de Pearson entre chaque tableau. Mais si je convertis le rdd en vecteurs et que j'applique statistics.corr(), la fonction calcule pour les colonnes mais je veux qu'il calcule pour les lignes. Quelqu'un peut-il suggérer un moyen de convertir mes données en colonnes afin que je puisse appliquer corr() sur cette fonction? Editer: La fonction statistics.corr() prend le vecteur javardd < en entrée.Calculer la corrélation de Pearson sur un jeu de données Spark

Répondre

0

vous pouvez essayer de convertir chaque ligne à un RDD [Double] et de comparer leurs combinaisons (manuellement ou boucles)

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") 

ou vous pouvez essayer de transposer votre RDD et passer le résultant RDD à la corr (..) - quelques idées pour transposer ici - How to transpose an RDD in Spark

Si vous avez plusieurs rangs/enregistrements et que vous voulez des corrélations entre eux, la matrice pourrait être trop grande et les deux options pourraient être trop basses (si ce n'est pas possible du tout))