sklearn.covariance.EllipticEnvelope¶
class sklearn.covariance.EllipticEnvelope(*, store_precision=True, assume_centered=False, support_fraction=None, contamination=0.1, random_state=None)
用于检测高斯分布数据集中异常值的对象。
在用户指南中阅读更多内容。
参数 | 说明 |
---|---|
store_precision | bool, default=True 指定是否存储估计的精度。 |
assume_centered | bool, default=False 如果为True,则计算稳健位置和协方差估计的支持度,并从中重新计算协方差估计,而不会先将数据中心化。这在处理均值显着等于零但不完全为零的数据时很有用。如果为False,则直接使用FastMCD算法计算稳健位置和协方差,而无需进行其他处理。 |
support_fraction | float, default=None 支持MCD原始估算的点数比例。如果为None,则将在算法中使用support_fraction的最小值: [n_sample + n_features + 1] / 2 ,范围是(0,1)。 |
contamination | float, default=0.1 数据集的污染量,即数据集中异常值的比例,范围是(0,0.5)。 |
random_state | int or RandomState instance, default=None 确定用于数据混洗的伪随机数生成器。在多个函数调用之间传递同一个整数值以获得重复的结果。请参阅: Glossary <random_state> 。 |
属性 | 说明 |
---|---|
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的样本数)。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_samples > n_features ** 2
的数据打交道。
参考资料
R68ae096da0e4-1 Rousseeuw, P.J., Van Driessen, K. “A fast algorithm for the minimum covariance determinant estimator” Technometrics 41(3), 212 (1999)
示例
>>> 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 returns 1 for an inlier and -1 for an outlier
>>> 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 (self, data) |
对原始的最小协方差行列式估计值进行校正。 |
decision_function (self, X) |
计算给定观测值的决策函数。 |
error_norm (self, comp_cov[, norm, scaling, …]) |
计算两个协方差估计量之间的均方误差。 |
fit (self, X[, y]) |
拟合EllipticEnvelope模型。 |
fit_predict (self, X[, y]) |
对X执行拟合并返回样本的标签。 |
get_params (self[, deep]) |
获取此估计器的参数。 |
get_precision (self) |
获取精确矩阵。 |
mahalanobis (self, X) |
计算给定观测值的平方马氏距离。 |
predict (self, X) |
根据拟合模型预测样本的标签(1为内点,-1为离群点)。 |
reweight_covariance (self, data) |
重新加权原始最小协方差行列式估计值。 |
score (self, X, y[, sample_weight]) |
返回给定测试数据和标签上的平均精度。 |
score_samples (self, X) |
计算负马氏距离。 |
set_params (self, **params) |
设置此估算器的参数。 |
__init__(self, *, store_precision=True, assume_centered=False, support_fraction=None, contamination=0.1, random_state=None)
初始化self. 请参阅help(type(self))以获得准确的说明。
correct_covariance(self, data)[source]
对原始的最小协方差行列式估计值进行修正。
使用Rousseeuw和Van Driessen在[RVD]中建议的经验修正因子进行修正。
参数 | 说明 |
---|---|
data | array-like of shape (n_samples, n_features) 具有p个特征和n个样本的数据矩阵。数据集必须是用于计算原始估计值的数据集。 |
返回值 | 说明 |
---|---|
covariance_corrected | ndarray of shape (n_features, n_features) 校正过的稳定协方差估计。 |
参考
[RVD] A Fast Algorithm for the Minimum Covariance Determinant Estimator, 1999, American Statistical Association and the American Society for Quality, TECHNOMETRICS
decision_function(self, X)
计算给定观测值的决策函数。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 数据矩阵。 |
返回值 | 说明 |
---|---|
decision | ndarray of shape (n_samples, ) 样本的决策函数。它等于移动的马氏距离。异常值的阈值为0,从而确保与其他异常值检测算法的兼容性。 |
error_norm(self, comp_cov, norm='frobenius', scaling=True, squared=True)
计算两个协方差估计量之间的均方误差。(在Frobenius规范的意义上)。
参数 | 说明 |
---|---|
comp_cov | array-like of shape (n_features, n_features) 要比较的协方差。 |
norm | orm{“frobenius”, “spectral”}, default=”frobenius” 用于计算误差的规范类型,可用的误差类型: - ‘frobenius’ (default): - ‘spectral’: 这里的A是 (comp_cov - self.covariance_) 的误差 |
scaling | bool, default=True 如果为True(默认),则平方误差范数除以n_features。如果为False,则不会重新调整平方误差范数。 |
squared | bool, default=True 是计算平方误差范数还是误差范数。如果为True(默认),则返回平方误差范数。如果为False,则返回误差范数。 |
返回值 | 说明 |
---|---|
result | floatself 和comp_cov 协方差估计量之间的均方误差(按照Frobenius范式的含义) 。 |
fit(self, X, y=None)
拟合EllipticEnvelope模型。
参数 | 说明 |
---|---|
X | {array-like, sparse matrix} of shape (n_samples, n_features) 训练数据 |
y | Ignored 未使用,出于API一致性目的而存在。 |
fit_predict(self, X, y=None)
对X执行拟合并返回样本的标签。
对于离群值返回-1,对于非离群值返回1。
参数 | 说明 |
---|---|
X | {array-like, sparse matrix, dataframe} of shape (n_samples, n_features) |
y | Ignored 未使用,出于API一致性目的而存在。 |
返回值 | 说明 |
---|---|
y | ndarray of shape (n_samples,) 1代表非离群点,-1代表离群点 |
get_params(self, deep=True)
获取此估计器的参数。
参数 | 说明 |
---|---|
deep | bool, default=True 如果为True,将返回估算器和所包含子对象的参数。 |
返回值 | 说明 |
---|---|
params | mapping of string to any 参数名称映射到其值。 |
get_precision(self)
获取精确度矩阵。
返回值 | 说明 |
---|---|
precision_ | array-like of shape (n_features, n_features) 与当前协方差对象关联的精度矩阵。 |
mahalanobis(self, X)
计算给定观测值的平方马氏距离。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 观测值,用来计算马氏距离。假设观测数据与fit中使用的数据来自相同的分布。 |
返回值 | 说明 |
---|---|
dist | ndarray of shape (n_samples,) 观测值的平方马氏距离。 |
predict(self, X)
根据拟合模型预测X对应的样本标签(1为非离群点,-1为离群点)。
reweight_covariance(self, data)
重新加权原始最小协方差行列式估计值。
使用[RVDriessen]中描述的Rousseeuw方法(相当于在计算位置和协方差估计之前从数据集中删除离群值)对观测值进行加权。
参数 | 说明 |
---|---|
data | array-like of shape (n_samples, n_features) 具有p个特征和n个样本的数据矩阵。数据集必须是用于计算原始估算值的数据集。 |
返回值 | 说明 |
---|---|
location_reweighted | ndarray of shape (n_features,) 重新加权的稳健位置估算。 |
covariance_reweighted | ndarray of shape (n_features, n_features) 重新加权的稳健协方差估计。 |
support_reweighted | ndarray of shape (n_samples,), dtype=bool 用于计算重新加权的稳健位置和协方差估计的观测掩模。 |
参考
[RVDriessen] A Fast Algorithm for the Minimum Covariance Determinant Estimator, 1999, American Statistical Association and the American Society for Quality, TECHNOMETRICS
score(self, X, y, sample_weight=None)
返回给定测试数据和标签上的平均准确度。
在多标签分类中,这是子集准确性,这是一个严格的指标,因为你需要为每个样本正确预测每个标签集。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 测试样本。 |
y | array-like of shape (n_samples,) or (n_samples, n_outputs) 样本对应的真实标签。 |
sample_weight | array-like of shape (n_samples,), default=None 样本权重。 |
返回值 | 说明 |
---|---|
score | float self.predict(X)的平均准确度 |
score_samples(self, X)
计算负马氏距离。
参数 | 说明 |
---|---|
X | array-like of shape (n_samples, n_features) 数据矩阵。 |
返回值 | 说明 |
---|---|
negative_mahal_distances | array-like of shape (n_samples,) 与Mahalanobis距离相反。 |
set_params(self, **params)
设置此估计器的参数。
该方法适用于简单的估计器以及嵌套对象(如piplines)。后者具有形式为<component>__<parameter>
的参数,这样就让更新嵌套对象的每个组件成为了可能。
参数 | 说明 |
---|---|
**params | dict 估计器参数。 |
返回值 | 说明 |
---|---|
self | object 估计器对象。 |