Я хотел сравнить производительность двух методов корреляции, Пирсона и Спирмена для большого набора данных.Поэтому я использовал библиотеку mlib в pyspark.Тем не менее, в некоторых случаях корреляция Пирсона дала мне значение нан, когда копейщик работал хорошо.Чтобы дважды проверить, что проблема не в моем наборе данных, я запустил несколько примеров вручную, и корреляция Пирсона имела значение, а не nan, как я получил, используя функцию корреляции mlib.Поэтому я ищу помощь, чтобы определить здесь ошибку или дать несколько советов о том, как отладить ошибку в этой функции
Ниже приведен простой пример для вычисления корреляции между двумя массивами:
x=[-18,-18,-18,-17.95,-17.9,-17.95,-18,-18,-18,-18,-17.95,-17.9,-18,-18.1,-18.05,-18,-18,-18,-18.05,-18.1,-18.1,-18.1,-18.05,-18,-18,-18,-18.05,-18.1,-18.1,-18.1]
x=np.asarray(x)
x=sc.parallelize(x)
x.count()
30
y=[4.10E-07,3.65E-07,3.20E-07,3.20E-07,3.20E-07,3.15E-07,3.10E-07,3.30E-07,3.45E-07,3.60E-07,4.60E-07,5.60E-07,6.35E-07,7.10E-07,6.80E-07,6.50E-07,5.20E-07,3.90E-07,4.15E-07,4.40E-07,5.05E-07,5.70E-07,4.90E-07,4.10E-07,3.50E-07,2.90E-07,2.85E-07,2.80E-07,3.40E-07,4.00E-07]
y=np.asarray(y)
y=sc.parallelize(y)
y.count()
30
In [172]: pearson=Statistics.corr(x,y,method='pearson')
2019-04-16 16:16:41 WARN PearsonCorrelation:66 - Pearson
correlation matrix contains NaN values.
In [173]: pearson
Out[173]: nan
In [174]: spearman=Statistics.corr(x,y,method='spearman')
In [175]: spearman
Out[175]: -0.21201144954413315
Следует отметить, что фактическое значение корреляции Пирсона для входа составляет -0,1945