Команда Numpy Covariance возвращает матрицу с большим количеством измерений, чем вход - PullRequest
0 голосов
/ 17 мая 2018

У меня есть произвольный вектор строки "u" и произвольная матрица "e" следующим образом:

u = np.resize(np.array([8,3]),[1,2])
e = np.resize(np.array([[2,2,5,5],[1, 6, 7, 4]]),[4,2])
np.cov(u,e)

array([[ 12.5,   0. ,   0. , -12.5,   7.5],
   [  0. ,   0. ,   0. ,   0. ,   0. ],
   [  0. ,   0. ,   0. ,   0. ,   0. ],
   [-12.5,   0. ,   0. ,  12.5,  -7.5],
   [  7.5,   0. ,   0. ,  -7.5,   4.5]])

Матрица, которую это возвращает, является 5x5. Это сбивает с толку меня, потому что самый большой размер входов составляет только 4.

Таким образом, это может быть не вопрос о пустяке, а скорее вопрос математики ... не уверен ...

1 Ответ

0 голосов
/ 17 мая 2018

Пожалуйста, обратитесь к официальной документации numpy (https://docs.scipy.org/doc/numpy-1.14.0/reference/generated/numpy.cov.html)) и проверьте, соответствует ли использование вами функции numpy.cov тому, чего вы пытаетесь достичь, и понимаете ли вы, что вы пытаетесь сделать.

При взгляде на подпись

numpy.cov (м, у = нет, rowvar = верно, смещение = ложно, ddof = нет, весы = нет, весы = нет)

м: массив_подобный

1-D или 2-D массив, содержащий несколько переменных и наблюдений. Каждая строка m представляет переменную, а каждый столбец - одно наблюдение>> всех этих переменных. Также см. Rowvar ниже.

y: массив_подобный, необязательный

Дополнительный набор переменных и наблюдений. у имеет ту же форму, что и у м.

Обратите внимание, как m и y объединяются, как показано в последнем примере на странице

>>> x = [-2.1, -1,  4.3]
>>> y = [3,  1.1,  0.12]
>>> X = np.stack((x, y), axis=0)
>>> print(np.cov(X))
[[ 11.71        -4.286     ]
[ -4.286        2.14413333]]
>>> print(np.cov(x, y))
[[ 11.71        -4.286     ]
[ -4.286        2.14413333]]
>>> print(np.cov(x))
11.71
...