OAS#
- class sklearn.covariance.OAS(*, store_precision=True, assume_centered=False)#
Oracle 近似收缩估计器。
在 用户指南 中阅读更多内容。
- Parameters:
- store_precisionbool, default=True
指定是否存储估计的精度。
- assume_centeredbool, default=False
如果为 True,数据在计算前不会被中心化。 当处理均值几乎为零但不完全为零的数据时很有用。 如果为 False(默认),数据将在计算前被中心化。
- Attributes:
- covariance_ndarray of shape (n_features, n_features)
估计的协方差矩阵。
- location_ndarray of shape (n_features,)
估计的位置,即估计的均值。
- precision_ndarray of shape (n_features, n_features)
估计的伪逆矩阵。 (仅在 store_precision 为 True 时存储)
- shrinkage_float
用于计算收缩估计的凸组合中的系数。范围是 [0, 1]。
- n_features_in_int
在 fit 期间看到的特征数量。
Added in version 0.24.
- feature_names_in_ndarray of shape (
n_features_in_
,) 在 fit 期间看到的特征名称。仅当
X
的特征名称全部为字符串时定义。Added in version 1.0.
See also
EllipticEnvelope
用于检测高斯分布数据集中的异常值的对象。
EmpiricalCovariance
最大似然协方差估计器。
GraphicalLasso
使用 l1 惩罚估计的稀疏逆协方差。
GraphicalLassoCV
使用交叉验证选择 l1 惩罚的稀疏逆协方差。
LedoitWolf
LedoitWolf 估计器。
MinCovDet
最小协方差行列式 (稳健的协方差估计器)。
ShrunkCovariance
带有收缩的协方差估计器。
Notes
正则化协方差为:
(1 - shrinkage) * cov + shrinkage * mu * np.identity(n_features),
其中 mu = trace(cov) / n_features,收缩由 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 >>> from sklearn.datasets import make_gaussian_quantiles >>> 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) >>> oas = OAS().fit(X) >>> oas.covariance_ array([[0.7533..., 0.2763...], [0.2763..., 0.3964...]]) >>> oas.precision_ array([[ 1.7833..., -1.2431... ], [-1.2431..., 3.3889...]]) >>> oas.shrinkage_ 0.0195...
- error_norm(comp_cov, norm='frobenius', scaling=True, squared=True)#
计算两个协方差估计器之间的均方误差。
- Parameters:
- comp_cov形状为 (n_features, n_features) 的类数组
要比较的协方差。
- norm{“frobenius”, “spectral”}, 默认=”frobenius”
用于计算误差的范数类型。可用的误差类型: - ‘frobenius’ (默认): sqrt(tr(A^t.A)) - ‘spectral’: sqrt(max(eigenvalues(A^t.A)) 其中 A 是误差
(comp_cov - self.covariance_)
。- scalingbool, 默认=True
如果为 True(默认),平方误差范数除以 n_features。 如果为 False,平方误差范数不进行缩放。
- squaredbool, 默认=True
是否计算平方误差范数或误差范数。 如果为 True(默认),返回平方误差范数。 如果为 False,返回误差范数。
- Returns:
- resultfloat
self
和comp_cov
协方差估计器之间的均方误差(以 Frobenius 范数为意义)。
- fit(X, y=None)#
拟合Oracle Approximating Shrinkage协方差模型到X。
- Parameters:
- X形状为(n_samples, n_features)的类数组
训练数据,其中
n_samples
是样本数量 而n_features
是特征数量。- y忽略
未使用,为了API一致性而存在。
- Returns:
- self对象
返回实例本身。
- get_metadata_routing()#
获取此对象的元数据路由。
请查看 用户指南 以了解路由机制的工作原理。
- Returns:
- routingMetadataRequest
MetadataRequest
封装的 路由信息。
- get_params(deep=True)#
获取此估计器的参数。
- Parameters:
- deepbool, 默认=True
如果为True,将返回此估计器和包含的子对象(也是估计器)的参数。
- Returns:
- paramsdict
参数名称映射到它们的值。
- get_precision()#
获取精度矩阵的方法。
- Returns:
- precision_array-like of shape (n_features, n_features)
与当前协方差对象相关的精度矩阵。
- mahalanobis(X)#
计算给定观测值的马氏距离平方。
- Parameters:
- X形状为 (n_samples, n_features) 的类数组
我们计算其马氏距离的观测值。假设这些观测值是从与fit中使用的数据相同的分布中抽取的。
- Returns:
- dist形状为 (n_samples,) 的 ndarray
观测值的马氏距离平方。
- score(X_test, y=None)#
计算在估计的高斯模型下
X_test
的对数似然。高斯模型由其均值和协方差矩阵定义,分别由
self.location_
和self.covariance_
表示。- Parameters:
- X_test类数组,形状为 (n_samples, n_features)
我们计算其似然的测试数据,其中
n_samples
是样本数量,n_features
是特征数量。X_test
假设是从与拟合中使用的数据相同的分布中抽取的(包括中心化)。- y忽略
未使用,为保持API一致性而存在。
- Returns:
- resfloat
以
self.location_
和self.covariance_
分别为高斯模型均值和协方差矩阵估计量的X_test
的对数似然。
- set_params(**params)#
设置此估计器的参数。
该方法适用于简单估计器以及嵌套对象(例如
Pipeline
)。后者具有形式为<component>__<parameter>
的参数,以便可以更新嵌套对象的每个组件。- Parameters:
- **paramsdict
估计器参数。
- Returns:
- selfestimator instance
估计器实例。
- set_score_request(*, X_test: bool | None | str = '$UNCHANGED$') OAS #
Request metadata passed to the
score
method.Note that this method is only relevant if
enable_metadata_routing=True
(seesklearn.set_config
). Please see User Guide on how the routing mechanism works.The options for each parameter are:
True
: metadata is requested, and passed toscore
if provided. The request is ignored if metadata is not provided.False
: metadata is not requested and the meta-estimator will not pass it toscore
.None
: metadata is not requested, and the meta-estimator will raise an error if the user provides it.str
: metadata should be passed to the meta-estimator with this given alias instead of the original name.
The default (
sklearn.utils.metadata_routing.UNCHANGED
) retains the existing request. This allows you to change the request for some parameters and not others.Added in version 1.3.
Note
This method is only relevant if this estimator is used as a sub-estimator of a meta-estimator, e.g. used inside a
Pipeline
. Otherwise it has no effect.- Parameters:
- X_teststr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED
Metadata routing for
X_test
parameter inscore
.
- Returns:
- selfobject
The updated object.
Gallery examples#
用于分类的普通、Ledoit-Wolf 和 OAS 线性判别分析
收缩协方差估计:LedoitWolf vs OAS 和最大似然