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.eighodernumpy.linalg.eighberechnet 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_pdetwerden 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
Aund einen Datenpunktxvor.>>> 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
Adurch und erstellt dasCovariance-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