scipy.stats.Covariance.

from_eigendecomposition#

static Covariance.from_eigendecomposition(eigendecomposition)[Quelle]#

Repräsentation einer Kovarianz, die über die Eigenzerlegung bereitgestellt wird

Parameter:
eigendecompositionSequenz

Eine Sequenz (nominal ein Tupel), die die Eigenwert- und Eigenvektor-Arrays enthält, wie sie von scipy.linalg.eigh oder numpy.linalg.eigh berechnet wurden.

Hinweise

Sei die Kovarianzmatrix \(A\), sei \(V\) die Matrix der Eigenvektoren und sei \(W\) die Diagonalmatrix der Eigenwerte, so dass V W V^T = A.

Wenn alle Eigenwerte strikt positiv sind, wird die Weißung eines Datenpunktes \(x\) durch Berechnung von \(x^T (V W^{-1/2})\) durchgeführt, wobei die inverse Quadratwurzel elementweise genommen werden kann. \(\log\det{A}\) wird als \(tr(\log{W})\) berechnet, wobei die \(\log\)-Operation elementweise durchgeführt wird.

Diese Covariance-Klasse unterstützt singuläre Kovarianzmatrizen. Bei der Berechnung von _log_pdet werden nicht-positive Eigenwerte ignoriert. Die Weißung ist nicht gut definiert, wenn der zu weißende Punkt nicht im Bereich der Spalten der Kovarianzmatrix liegt. Die hier getroffene Konvention ist, die inverse Quadratwurzel von nicht-positiven Eigenwerten als Nullen zu behandeln.

Beispiele

Bereiten Sie eine symmetrische positiv definite Kovarianzmatrix A und einen Datenpunkt x vor.

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> n = 5
>>> A = rng.random(size=(n, n))
>>> A = A @ A.T  # make the covariance symmetric positive definite
>>> x = rng.random(size=n)

Führt die Eigenzerlegung von A durch und erstellt das Covariance-Objekt.

>>> w, v = np.linalg.eigh(A)
>>> cov = stats.Covariance.from_eigendecomposition((w, v))

Vergleichen Sie die Funktionalität des Covariance-Objekts mit Referenzimplementierungen.

>>> res = cov.whiten(x)
>>> ref = x @ (v @ np.diag(w**-0.5))
>>> np.allclose(res, ref)
True
>>> res = cov.log_pdet
>>> ref = np.linalg.slogdet(A)[-1]
>>> np.allclose(res, ref)
True