EllipticEnvelope#

class sklearn.covariance.EllipticEnvelope(*, store_precision=True, assume_centered=False, support_fraction=None, contamination=0.1, random_state=None)#

一个用于检测高斯分布数据集中异常点的对象。

更多信息请参阅 用户指南

Parameters:
store_precisionbool, default=True

指定是否存储估计的精度。

assume_centeredbool, default=False

如果为True,则计算稳健位置和协方差估计的支持度,并重新计算协方差估计,而不对数据进行中心化。 适用于数据的均值显著等于零但不是精确为零的情况。 如果为False,则直接使用FastMCD算法计算稳健位置和协方差,不进行额外处理。

support_fractionfloat, default=None

要包含在原始MCD估计支持中的点的比例。如果为None,将在算法中使用support_fraction的最小值: (n_samples + n_features + 1) / 2 * n_samples 。 范围是(0, 1)。

contaminationfloat, default=0.1

数据集的污染量,即数据集中异常点的比例。范围是(0, 0.5]。

random_stateint, RandomState instance or None, default=None

确定用于洗牌数据的伪随机数生成器。传递一个int以在多次函数调用中获得可重复的结果。请参阅 术语表

Attributes:
location_ndarray of shape (n_features,)

估计的稳健位置。

covariance_ndarray of shape (n_features, n_features)

估计的稳健协方差矩阵。

precision_ndarray of shape (n_features, n_features)

估计的伪逆矩阵。 (仅在store_precision为True时存储)

support_ndarray of shape (n_samples,)

用于计算稳健位置和形状估计的观测值的掩码。

offset_float

用于从原始分数定义决策函数的偏移量。 我们有关系: decision_function = score_samples - offset_ 。 偏移量取决于污染参数,并定义为在训练中获得预期数量的异常点(决策函数 < 0的样本)。

Added in version 0.20.

raw_location_ndarray of shape (n_features,)

在修正和重新加权之前原始稳健估计的位置。

raw_covariance_ndarray of shape (n_features, n_features)

在修正和重新加权之前原始稳健估计的协方差。

raw_support_ndarray of shape (n_samples,)

用于计算原始稳健位置和形状估计的观测值的掩码,在修正和重新加权之前。

dist_ndarray of shape (n_samples,)

训练集(在其上调用 fit )观测值的马氏距离。

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

EmpiricalCovariance

最大似然协方差估计器。

GraphicalLasso

稀疏逆协方差估计 使用l1惩罚估计器。

LedoitWolf

LedoitWolf 估计器。

MinCovDet

最小协方差行列式 (协方差的稳健估计器)。

OAS

Oracle 近似收缩估计器。

ShrunkCovariance

带收缩的协方差估计器。

Notes

从协方差估计的异常点检测在高维设置中可能会失效或表现不佳。特别是,应始终确保 n_samples > n_features ** 2

References

[1]

Rousseeuw, P.J., Van Driessen, K. “A fast algorithm for the minimum covariance determinant estimator” Technometrics 41(3), 212 (1999)

Examples

>>> import numpy as np
>>> from sklearn.covariance import EllipticEnvelope
>>> true_cov = np.array([[.8, .3],
...                      [.3, .4]])
>>> X = np.random.RandomState(0).multivariate_normal(mean=[0, 0],
...                                                  cov=true_cov,
...                                                  size=500)
>>> cov = EllipticEnvelope(random_state=0).fit(X)
>>> # predict 返回 1 表示正常点,-1 表示异常点
>>> cov.predict([[0, 0],
...              [3, 3]])
array([ 1, -1])
>>> cov.covariance_
array([[0.7411..., 0.2535...],
       [0.2535..., 0.3053...]])
>>> cov.location_
array([0.0813... , 0.0427...])
correct_covariance(data)#

应用对原始最小协方差行列式估计的修正。

使用Rousseeuw和Van Driessen在[RVD]中建议的经验修正因子进行修正。

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

数据矩阵,包含p个特征和n个样本。 数据集必须是用于计算原始估计的数据集。

Returns:
covariance_corrected形状为(n_features, n_features)的ndarray

修正后的鲁棒协方差估计。

References

[RVD]

一种用于最小协方差行列式估计器的快速算法,1999年,美国统计协会 和美国质量学会,TECHNOMETRICS

decision_function(X)#

计算给定观测值的决策函数。

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

数据矩阵。

Returns:
decision形状为 (n_samples,) 的 ndarray

样本的决策函数。 它等于移位的马哈拉诺比斯距离。 异常值的阈值为 0,这确保了与其他异常检测算法的兼容性。

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

selfcomp_cov 协方差估计器之间的均方误差(以 Frobenius 范数为意义)。

fit(X, y=None)#

拟合EllipticEnvelope模型。

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

训练数据。

y忽略

未使用,为了保持API一致性而存在。

Returns:
selfobject

返回实例本身。

fit_predict(X, y=None, **kwargs)#

对X进行拟合并返回X的标签。

对于异常值返回-1,对于正常值返回1。

Parameters:
X{array-like, sparse matrix},形状为 (n_samples, n_features)

输入样本。

y忽略

未使用,为了API一致性而存在。

**kwargsdict

传递给 fit 的参数。

Added in version 1.4.

Returns:
yndarray,形状为 (n_samples,)

正常值为1,异常值为-1。

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

观测值的马氏距离平方。

predict(X)#

根据拟合模型预测X的标签(1表示内点,-1表示异常点)。

Parameters:
Xarray-like of shape (n_samples, n_features)

数据矩阵。

Returns:
is_inlierndarray of shape (n_samples,)

对于异常点/离群点返回-1,对于内点返回+1。

reweight_covariance(data)#

重新加权原始最小协方差行列式估计。

使用Rousseeuw的方法重新加权观测值(相当于在计算位置和协方差估计之前从数据集中删除异常观测值),该方法在[RVDriessen]中描述。

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

数据矩阵,包含p个特征和n个样本。 数据集必须是用于计算原始估计的数据集。

Returns:
location_reweighted形状为(n_features,)的ndarray

重新加权的稳健位置估计。

covariance_reweighted形状为(n_features, n_features)的ndarray

重新加权的稳健协方差估计。

support_reweighted形状为(n_samples,)的ndarray,dtype=bool

用于计算重新加权的稳健位置和协方差估计的观测值的掩码。

References

[RVDriessen]

一种用于最小协方差行列式估计器的快速算法,1999年,美国统计协会和美国质量学会,TECHNOMETRICS

score(X, y, sample_weight=None)#

返回给定测试数据和标签的平均准确率。

在多标签分类中,这是子集准确率,这是一个严格的指标,因为你要求每个样本的每个标签集都被正确预测。

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

测试样本。

y形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组

X 的真实标签。

sample_weight形状为 (n_samples,) 的类数组,默认=None

样本权重。

Returns:
scorefloat

self.predict(X) 相对于 y 的平均准确率。

score_samples(X)#

计算负的马氏距离。

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

数据矩阵。

Returns:
negative_mahal_distances形状为 (n_samples,) 的类数组

马氏距离的相反数。

set_params(**params)#

设置此估计器的参数。

该方法适用于简单估计器以及嵌套对象(例如 Pipeline )。后者具有形式为 <component>__<parameter> 的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

set_score_request(*, sample_weight: bool | None | str = '$UNCHANGED$') EllipticEnvelope#

Request metadata passed to the score method.

Note that this method is only relevant if enable_metadata_routing=True (see sklearn.set_config ). Please see User Guide on how the routing mechanism works.

The options for each parameter are:

  • True : metadata is requested, and passed to score if provided. The request is ignored if metadata is not provided.

  • False : metadata is not requested and the meta-estimator will not pass it to score .

  • 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:
sample_weightstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

Metadata routing for sample_weight parameter in score .

Returns:
selfobject

The updated object.