oas#

sklearn.covariance.oas(X, *, assume_centered=False)#

估计使用Oracle近似收缩的协方差。

更多信息请参阅 用户指南

Parameters:
X形状为 (n_samples, n_features) 的类数组

计算协方差估计的数据。

assume_centeredbool, 默认=False

如果为True,计算前数据将不会被中心化。 适用于均值显著等于零但并非精确为零的数据。 如果为False,计算前数据将被中心化。

Returns:
shrunk_cov形状为 (n_features, n_features) 的类数组

收缩后的协方差。

shrinkagefloat

用于计算收缩估计的凸组合中使用的系数。

Notes

正则化协方差为:

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

其中 mu = trace(cov) / n_features,shrinkage 由OAS公式给出 (见[1])。

这里实现的收缩公式与[1]中的公式23有所不同。在原始文章中,公式(23)指出2/p(p为特征数量)乘以Trace(cov*cov)在分子和分母中都要进行,但这一操作被省略了,因为对于较大的p,2/p的值非常小,不会影响估计器的值。

References

Examples

>>> 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
0.0195...