2017-03-29 3 views
0

berechne ich meine Kovarianz mit folgenden Formel:Warum ist die Kovarianz von Numpys völlig anders als meine?

np.dot(X_zero_mean, X_zero_mean.T)/(X_zero_mean.shape[0] -1) 

und vergleichen zu

np.cov(X_zero_mean.T) 

ich beide drucken die resultierenden Matrizen eine Figur aus, sie zu trösten und zu schaffen, aber sie sind nicht die gleiche . Warum? Könnte es sein, dass Cov einige numerische Fehler vermeidet, die mit meiner obigen Formel passiert? Zuerst eine meine Kovarianz, zweite ist die numpy cov: enter image description here

+0

Können Sie Ihre Eingangsmatrizen wenn möglich teilen? – lordingtar

+0

Nicht sicher, ob nützlich ... Es ist eine 38 * 4080-Matrix. – Hakaishin

Antwort

1

Ohne Ihre genauen Matrizen ist es schwer zu sagen, aber ich würde vermuten, dass es ist, weil Sie die Transponierung der Matrix nehmen, bevor es zu np.cov vorbei . Das würde auch erklären, warum das Ergebnis von numpy so aussieht, als wäre es viel höher als das Ihre. np.cov(X.T) entspricht np.dot(X.T, X), nicht np.dot(X, X.T).

+0

Wenn die Transpose weg ist, ist sie immer noch vollständig ausgeschaltet. Ist die Formel falsch? – Hakaishin

+0

Bitte aktualisieren Sie Ihre Post mit den Ergebnissen mit 'np.cov (X_zero_mean)'. Dann könnten wir vielleicht dazu beitragen, diese Frage zu beantworten. –

Verwandte Themen