2017-04-02 2 views
3

J'utilise numpy et je veux calculer la matrice de covariance pour un ndarray. J'essaie d'utiliser numpy.cov() mais je n'obtiens pas les bons résultats. Plus de détails ci-dessous.Numpy Covariance Matrix numpy.cov

Mon ndarray est 768x8 pour où 8 est les caractéristiques de nombres dans mon ensemble de données. Quand j'utilise MATLAB pour calculer la matrice de covariance, j'obtiens un 8x8 (ce dont j'ai besoin), mais quand j'utilise np.cov(), j'obtiens un 768x768 qui est incorrect. J'ai essayé de changer l'argument rowvar à true et cela ne fonctionne pas.

Quel serait l'appel correct à numpy.cov()? En d'autres termes, comment pourrais-je reproduire les résultats cov() de MATLAB en utilisant numpy.

Répondre

8

Étonnamment, le documentation pourrait vous le dire. Vous devez transmettre rowvar=False pour indiquer que les colonnes représentent des variables.

>>> data.shape 
(768, 8) 
>>> numpy.cov(data, rowvar=False).shape 
(8, 8) 
+0

Nous vous remercions de l'avoir signalé. J'ai fait référence à la documentation mais je n'ai pas réalisé que la valeur par défaut pour rowvar est True (et non False)! – user152945

+0

Si transpose s'il est passé à numpy.cov, il devrait produire 8 X 8 Matrix. – user3341078