Встроенная функция для вычисления ковариации - PullRequest
11 голосов
/ 29 марта 2012

Есть ли в python способ получить ковариационную матрицу с учетом среднего значения и выборочных точек данных

Пример:

mean = [3 3.6]
data = [[1 2]
        [2 3]
        [3 3]
        [4 5] 
        [5 5]]

Я знаю, как вычислить то же самое, подставляя эти значенияформула.Но есть ли встроенная функция в Python, которая делает это для меня.Я знаю, что есть один в Matlab, но я не уверен насчет python.

1 Ответ

22 голосов
/ 29 марта 2012

numpy.cov() может использоваться для вычисления ковариационной матрицы:

In [1]: import numpy as np

In [2]: data = np.array([[1,2], [2,3], [3,3], [4,5], [5,5]])

In [3]: np.cov(data.T)
Out[3]: 
array([[ 2.5,  2. ],
       [ 2. ,  1.8]])

По умолчанию np.cov() ожидает, что каждая строка будет представлять переменную с наблюдениями в столбцах. Поэтому мне пришлось транспонировать вашу матрицу (используя .T).

Альтернативный способ добиться того же - установить для rowvar значение False:

In [15]: np.cov(data, rowvar=False)
Out[15]: 
array([[ 2.5,  2. ],
       [ 2. ,  1.8]])
...