sklearn.covariance.shrunk_covariance#

sklearn.covariance.shrunk_covariance(emp_cov, shrinkage=0.1)[source]#

Calculate covariance matrices shrunk on the diagonal.

Read more in the User Guide.

Parameters:
emp_covarray-like of shape (…, n_features, n_features)

Covariance matrices to be shrunk, at least 2D ndarray.

shrinkagefloat, default=0.1

Coefficient in the convex combination used for the computation of the shrunk estimate. Range is [0, 1].

Returns:
shrunk_covndarray of shape (…, n_features, n_features)

Shrunk covariance matrices.

Notes

The regularized (shrunk) covariance is given by:

(1 - shrinkage) * cov + shrinkage * mu * np.identity(n_features)

where mu = trace(cov) / n_features.

Examples

>>> import numpy as np
>>> from sklearn.datasets import make_gaussian_quantiles
>>> from sklearn.covariance import empirical_covariance, shrunk_covariance
>>> real_cov = np.array([[.8, .3], [.3, .4]])
>>> rng = np.random.RandomState(0)
>>> X = rng.multivariate_normal(mean=[0, 0], cov=real_cov, size=500)
>>> shrunk_covariance(empirical_covariance(X))
array([[0.73..., 0.25...],
       [0.25..., 0.41...]])