2013-02-02 98 views
20

Come si calcola la matrice di correlazione in python? Ho un vettore n-dimensionale in cui ogni elemento ha 5 dimensioni. Per esempio il mio vettore sembramatrice di correlazione in python

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

In questo caso la dimensione del vettore è 4 e ogni elemento di questo vettore sono 5 dimensioni. Come costruire la matrice nel modo più semplice?

Grazie

risposta

22

Utilizzando numpy, è possibile utilizzare 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

Grazie. Per la mia applicazione effettiva, sto ricevendo il seguente errore AttributeError: l'oggetto 'int' non ha attributo 'corrcoef' – user1964587

+1

Sembra che tu abbia definito 'np' come un' int'. Sopra, 'numpy' è stato importato come' np'. Avrai bisogno di disambiguare i due. – unutbu

+0

Come si traccia la matrice di correlazione. Ho provato con questa seguente funzione imshow (corr_matrix, interpolation = 'bilineare') colorbar() show() L'origine della matrice di figure è (0, n) invece di (0,0). Come lo posso fare. La dimensione della matrice è 5000X5000 – user1964587

0

Ecco una pretty good example di calcolare una forma di serie storiche multipla matrice correlazioni con Python. Il codice sorgente incluso calcola la matrice di correlazione per un insieme di coppie valutarie Forex utilizzando Pandas, NumPy e matplotlib per produrre un grafico di correlazioni.

I dati di esempio sono un set di file di dati cronologici e l'output è una matrice di correlazione singola e un grafico. Il codice è molto ben documentato.

8

È anche possibile utilizzare np.array se non si desidera scrivere nuovamente la matrice.

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 
Problemi correlati