2016-10-04 9 views
1

У меня есть JavaRDD, который содержит массивы двойников. Теперь я хочу рассчитать коэффициент pearson между каждым массивом. Но если я конвертирую rdd в векторы и применяю функцию statistics.corr(), функция вычисляет для столбцов, но я хочу, чтобы она вычислялась для строк. Может ли кто-нибудь предложить способ преобразования моих данных в столбцы, чтобы я мог применить функцию corr()?Вычислить Корреляцию Пирсона в наборе данных Spark

Редактировать: Функция statistics.corr() принимает javardd < vector> в качестве входных данных.

ответ

0

вы можете попытаться преобразовать каждую строку РДА [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 и передать полученный РДД в корбанка (..) - некоторые идеи по транспонированию здесь - How to transpose an RDD in Spark

Если у вас есть несколько строк/записей, хотя вы хотите, чтобы корреляции друг против друга, матрица может быть слишком большой, и обе опции могут занять слишком низкую (если вообще невозможно))