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