корреляция Пирсона с использованием np.random.randal - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть следующий код для расчета коэффициента корреляции с использованием двух разных способов генерации числовых рядов. Он не работает для первого пути (corr_coeff_pearson), но работает для 2-го пути (corr_coeff_pearson_1). Почему это так? В обоих случаях переменные имеют класс 'numpy.ndarray'

import numpy as np

np.random.seed(1000)

inp_vct_lngt = 5

X = 2*np.random.rand(inp_vct_lngt,1)
y=4+3*X+np.random.randn(inp_vct_lngt,1)
print(type(X))

corr_coeff_pearson=0
corr_coeff_pearson = np.corrcoef(X,y)
print("Pearson Correlation:")
print(corr_coeff_pearson)

X_1 = np.random.randint(0,50,5)
y_1 = X_1 + np.random.normal(0,10,5)
print(type(X_1))

corr_coeff_pearson_1 = np.corrcoef(X_1,y_1)
print("Pearson Correlation:")
print(corr_coeff_pearson_1)

Есть ли какой-нибудь способ "преобразовать" число в первый способ генерации пропущенной серии?

1 Ответ

0 голосов
/ 10 сентября 2018

Проблема в том, что X и y являются двухмерными:

>>> X
array([[1.9330627 ],
       [0.19204405],
       [0.21168505],
       [0.65018234],
       [0.83079548]])
>>> y
array([[8.60619212],
       [6.09210226],
       [5.33097283],
       [5.71649684],
       [5.18771916]])

Так corrcoef думает

Каждая строка x представляет переменную, а каждый столбец - отдельное наблюдение всех этих переменных

(цитата из документов )

То, что вы можете сделать, это сгладить двумерное измерение:

>>> np.corrcoef(X.flatten(),y.flatten())
array([[1.        , 0.84196446],
       [0.84196446, 1.        ]])

Или используйте rowvar=False:

>>> np.corrcoef(X,y,rowvar=False)
array([[1.        , 0.84196446],
       [0.84196446, 1.        ]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...