2012-03-29 13 views
11

Czy istnieje sposób w Pythonie, aby uzyskać macierz kowariancji podane średnie i przykładowe punkty danychbudować w funkcji do obliczenia kowariancji

Przykład:

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

wiem jak obliczyć ten sam zastępując je wartości w formule. Ale czy istnieje funkcja kompilacji w Pythonie, który robi to dla mnie. Wiem, że jest jeden w Matlab, ale nie jestem pewien o Pythonie.

Odpowiedz

22

numpy.cov() może być używany do obliczania macierzy kowariancji:

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]]) 

domyślnie np.cov() oczekuje, że każdy rząd reprezentuje zmienną, przy obserwacji w kolumnach. Musiałem przetransponować twoją macierz (używając .T).

Alternatywnym sposobem osiągnięcia tego samego jest poprzez ustawienie rowvar do False:

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

Dzięki ton za pomoc :) –