2013-02-02 31 views
20

Jak obliczyć macierz korelacji w pythonie? Mam wektor n-wymiarowy, w którym każdy element ma 5 wymiarów. Na przykład mój wektor wygląda na:macierz korelacji w pythonie

 
[ 
[0.1, .32, .2, 0.4, 0.8], 
[.23, .18, .56, .61, .12], 
[.9, .3, .6, .5, .3], 
[.34, .75, .91, .19, .21] 
] 

W tym przypadku wymiar wektora wynosi 4, a każdy element tego wektora ma 5 wymiarów. Jak zbudować matrycę w najprostszy sposób?

Dzięki

Odpowiedz

22

Korzystanie numpy, można użyć np.corrcoef:

In [88]: import numpy as np 

In [89]: np.corrcoef([[0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21]]) 
Out[89]: 
array([[ 1.  , -0.35153114, -0.74736506, -0.48917666], 
     [-0.35153114, 1.  , 0.23810227, 0.15958285], 
     [-0.74736506, 0.23810227, 1.  , -0.03960706], 
     [-0.48917666, 0.15958285, -0.03960706, 1.  ]]) 
+0

Dzięki. Dla mojej rzeczywistej aplikacji otrzymuję następujący błąd AttributeError: 'int' obiekt nie ma atrybutu 'corrcoef' – user1964587

+1

To brzmi tak, jakby zdefiniowałeś 'np' jako' int'. Powyżej 'numpy' został zaimportowany jako' np'. Musisz je rozróżnić. – unutbu

+0

Jak wykreślić macierz korelacji. Próbowałem z następującą funkcją imshow (corr_matrix, interpolation = 'bilinear') colorbar() show() Początek macierzy figur jest (0, n) zamiast (0,0). Jak mogę to zrobić. Wymiar macierzy to 5000X5000 – user1964587

0

Oto pretty good example wyliczania macierzy korelacji wielokrotnej formy szeregów czasowych przy użyciu Pythona. Dołączony kod źródłowy oblicza macierz korelacji dla zestawu par walutowych rynku Forex za pomocą Pand, NumPy i matplotlib w celu wygenerowania wykresu korelacji.

Przykładowe dane to zbiór historycznych plików danych, a dane wyjściowe to pojedyncza macierz korelacji i wykres. Kod jest bardzo dobrze udokumentowany.

8

Możesz także użyć opcji np.array, jeśli nie chcesz ponownie pisać swojej matrycy.

import numpy as np 
a = np.array([ [0.1, .32, .2, 0.4, 0.8], [.23, .18, .56, .61, .12], [.9, .3, .6, .5, .3], [.34, .75, .91, .19, .21]]) 
b = np.corrcoef(a) 
print b