oas#
- sklearn.covariance.oas(X, *, assume_centered=False)[Quelle]#
Schätzt Kovarianz mit dem Oracle Approximating Shrinkage.
Lesen Sie mehr im Benutzerhandbuch.
- Parameter:
- Xarray-like der Form (n_samples, n_features)
Daten, aus denen die Kovarianzschätzung berechnet werden soll.
- assume_centeredbool, Standard=False
Wenn True, werden die Daten vor der Berechnung nicht zentriert. Nützlich für die Arbeit mit Daten, deren Mittelwert signifikant gleich Null ist, aber nicht exakt Null. Wenn False, werden die Daten vor der Berechnung zentriert.
- Gibt zurück:
- shrunk_covarray-like, Shape (n_features, n_features)
Geschrumpfte Kovarianz.
- shrinkagefloat
Koeffizient in der konvexen Kombination, die zur Berechnung der geschrumpften Schätzung verwendet wird.
Anmerkungen
Die regularisierte Kovarianz ist
(1 - shrinkage) * cov + shrinkage * mu * np.identity(n_features),
wobei mu = trace(cov) / n_features und shrinkage gegeben ist durch die OAS-Formel (siehe [1]).
Die hier implementierte Schrumpfungsformulierung unterscheidet sich von Gl. 23 in [1]. Im Originalartikel besagt Formel (23), dass 2/p (p ist die Anzahl der Merkmale) mit Trace(cov*cov) sowohl im Zähler als auch im Nenner multipliziert wird, aber diese Operation wird weggelassen, da für ein großes p der Wert von 2/p so klein ist, dass er den Wert des Schätzers nicht beeinflusst.
Referenzen
Beispiele
>>> import numpy as np >>> from sklearn.covariance import oas >>> rng = np.random.RandomState(0) >>> real_cov = [[.8, .3], [.3, .4]] >>> X = rng.multivariate_normal(mean=[0, 0], cov=real_cov, size=500) >>> shrunk_cov, shrinkage = oas(X) >>> shrunk_cov array([[0.7533, 0.2763], [0.2763, 0.3964]]) >>> shrinkage np.float64(0.0195)