所有模型

pyod.models.abod 模块

基于角度的异常检测器 (ABOD)

class pyod.models.abod.ABOD(contamination=0.1, n_neighbors=5, method='fast')[源代码]

基类:BaseDetector

ABOD 类用于基于角度的异常检测。对于一个观测值,其与所有邻居的加权余弦分数的方差可以被视为异常分数。详情请参见 [BKZ+08]

支持两种版本的 ABOD:

  • 快速ABOD:使用k近邻来近似。

  • 原始ABOD:考虑所有训练点,时间复杂度高,为O(n^3)。

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • n_neighbors (int, optional (default=10)) – 用于 k 近邻查询的默认邻居数量。

  • method (str, optional (default='fast')) – metric 的有效值为: - ‘fast’: 快速 ABOD。仅考虑训练点的 n_neighbors - ‘default’: 包含所有训练点的原始 ABOD,这可能会很慢

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

pyod.models.ae1svm 模块

使用带有异常检测的 AE-1SVM (PyTorch) 来源: https://arxiv.org/pdf/1804.04888 Minh Nghia 还提供了该模型的另一个实现: https://github.com/minh-nghia/AE-1SVM (Tensorflow)

class pyod.models.ae1svm.AE1SVM(hidden_neurons=None, hidden_activation='relu', batch_norm=True, learning_rate=0.001, epochs=50, batch_size=32, dropout_rate=0.2, weight_decay=1e-05, preprocessing=True, loss_fn=None, contamination=0.1, alpha=1.0, sigma=1.0, nu=0.1, kernel_approx_features=1000)[源代码]

基类:BaseDetector

使用单类SVM的自动编码器进行异常检测。

注意:需要 self.device,否则所有张量可能不在同一设备上(如果设备运行在 GPU 上)

参数:
  • hidden_neurons (list, optional (default=[64, 32])) – 每个隐藏层中的神经元数量。

  • hidden_activation (str, optional (default='relu')) – 隐藏层的激活函数。

  • batch_norm (bool, optional (default=True)) – 是否使用批量归一化。

  • learning_rate (float, optional (default=1e-3)) – 训练模型的学习率。

  • epochs (int, optional (default=50)) – 训练的轮数。

  • batch_size (int, optional (default=32)) – 每个训练批次的大小。

  • dropout_rate (float, optional (default=0.2)) – 用于正则化的丢弃率。

  • weight_decay (float, optional (default=1e-5)) – 优化器的权重衰减(L2 惩罚)。

  • preprocessing (bool, optional (default=True)) – 是否对输入数据应用标准缩放。

  • loss_fn (callable, optional (default=torch.nn.MSELoss)) – 用于重建损失的损失函数。

  • contamination (float, optional (default=0.1)) – 数据中异常值的比例。

  • alpha (float, optional (default=1.0)) – 最终损失计算中重建损失的权重。

  • sigma (float, optional (default=1.0)) – 随机傅里叶特征的缩放因子。

  • nu (float, optional (default=0.1)) – SVM 损失的参数。

  • kernel_approx_features (int, optional (default=1000)) – 用于近似核的随机傅里叶特征的数量。

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

参数:

X (numpy.ndarray) – 输入样本。

返回:

输入样本的异常分数。

返回类型:

numpy.ndarray

fit(X, y=None)[源代码]

将模型拟合到数据。

参数:
  • X (numpy.ndarray) – 输入数据。

  • y (None) – 忽略,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

pyod.models.alad 模块

使用对抗学习进行异常检测

class pyod.models.alad.ALAD(activation_hidden_gen='tanh', activation_hidden_disc='tanh', output_activation=None, dropout_rate=0.2, latent_dim=2, dec_layers=[5, 10, 25], enc_layers=[25, 10, 5], disc_xx_layers=[25, 10, 5], disc_zz_layers=[25, 10, 5], disc_xz_layers=[25, 10, 5], learning_rate_gen=0.0001, learning_rate_disc=0.0001, add_recon_loss=False, lambda_recon_loss=0.1, epochs=200, verbose=0, preprocessing=False, add_disc_zz_loss=True, spectral_normalization=False, batch_size=32, contamination=0.1, device=None)[源代码]

基类:BaseDetector

对抗学习异常检测 (ALAD)。论文: https://arxiv.org/pdf/1812.02288.pdf

详情请参见 [BZRF+18]

参数:
  • output_activation (str, optional (default=None)) – 用于编码器和解码器输出层的激活函数。

  • activation_hidden_disc (str, optional (default='tanh')) – 用于判别器隐藏层的激活函数。

  • activation_hidden_gen (str, optional (default='tanh')) – 编码器和解码器(即生成器)中隐藏层使用的激活函数。

  • epochs (int, optional (default=500)) – 训练模型的轮数。

  • batch_size (int, optional (default=32)) – 每个梯度更新的样本数量。

  • dropout_rate (float in (0., 1), optional (default=0.2)) – 在所有层中使用的dropout。

  • dec_layers (list, optional (default=[5,10,25])) – 列表,指示解码器网络每个隐藏层的节点数。因此,[10,10] 表示两个隐藏层,每个层有 10 个节点。

  • enc_layers (list, optional (default=[25,10,5])) – 列表,指示编码器网络每个隐藏层的节点数。因此,[10,10] 表示两个隐藏层,每个层有10个节点。

  • disc_xx_layers (list, optional (default=[25,10,5])) – 列表指示了判别器_xx每个隐藏层的节点数。因此,[10,10]表示有两个隐藏层,每个层有10个节点。

  • disc_zz_layers (list, optional (default=[25,10,5])) – 列表指示了判别器_zz每个隐藏层的节点数。因此,[10,10]表示有两个隐藏层,每个层有10个节点。

  • disc_xz_layers (list, optional (default=[25,10,5])) – 列表指示了判别器_xz每个隐藏层的节点数。因此,[10,10]表示有两个隐藏层,每个层有10个节点。

  • learning_rate_gen (float in (0., 1), optional (default=0.001)) – 训练编码器和解码器的学习率

  • learning_rate_disc (float in (0., 1), optional (default=0.001)) – 训练判别器的学习率

  • add_recon_loss (bool optional (default=False)) – 基于重建误差为编码器和解码器添加额外的损失

  • lambda_recon_loss (float in (0., 1), optional (default=0.1)) – 如果 add_recon_loss= True,则重建损失会乘以 lambda_recon_loss 并加到生成器的总损失中(即编码器和解码器)。

  • preprocessing (bool, optional (default=True)) – 如果为真,对数据应用标准化处理。

  • verbose (int, optional (default=1)) – 详细模式。 - 0 = 静默 - 1 = 进度条

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时,这用于定义决策函数的阈值。

  • device (str or None, optional (default=None)) – 用于计算的设备。如果为 None,将使用默认设备。可能的值包括 ‘cpu’ 或 ‘gpu’。此参数允许用户指定运行模型的首选设备。

decision_scores_

训练数据[0,1]的异常分数。数值越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,离群值被赋予更大的异常分数。:param X: 训练输入样本。仅接受稀疏矩阵。

如果它们被基础估计器支持。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None, noise_std=0.1)[源代码]

拟合检测器。在无监督方法中忽略 y。:param X: 输入样本。:type X: 形状为 (n_samples, n_features) 的 numpy 数组 :param y: 未使用,为保持 API 一致性而存在。:type y: 忽略

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

plot_learning_curves(start_ind=0, window_smoothening=10)[源代码]
predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

pyod.models.anogan 模块

使用生成对抗网络的异常检测 (AnoGAN) 论文: https://arxiv.org/pdf/1703.05921.pdf 注意,这是另一个 AnoGAN 的实现,不同于 https://github.com/fuchami/ANOGAN 的实现。

class pyod.models.anogan.AnoGAN(activation_hidden='tanh', dropout_rate=0.2, latent_dim_G=2, G_layers=[20, 10, 3, 10, 20], verbose=0, D_layers=[20, 10, 5], index_D_layer_for_recon_error=1, epochs=500, preprocessing=False, learning_rate=0.001, learning_rate_query=0.01, epochs_query=20, batch_size=32, output_activation=None, contamination=0.1, device=None)[源代码]

基类:BaseDetector

使用生成对抗网络进行异常检测 (AnoGAN)。参见原始论文《使用生成对抗网络进行无监督异常检测以指导标记发现》。

详情请参见 [BSSeebockW+17]

参数:

output_activation (str, optional (default=None)) – 用于输出层的激活函数。

activation_hiddenstr, 可选 (默认=’tanh’)

用于输出层的激活函数。

epochsint, 可选 (默认=500)

训练模型的轮数。

批量大小int, 可选 (默认=32)

每个梯度更新的样本数量。

dropout_ratefloat in (0., 1), 可选 (默认=0.2)

在所有层中使用的dropout。

G_layerslist, 可选 (默认=[20,10,3,10,20])

列表,指示生成器每个隐藏层的节点数。因此,[10,10] 表示有两个隐藏层,每个层有10个节点。

D_layerslist, 可选 (默认=[20,10,5])

列表,指示鉴别器每个隐藏层的节点数。因此,[10,10] 表示有两个隐藏层,每个层有10个节点。

learning_rate: float in (0., 1), 可选 (默认=0.001)

训练网络的学习率

index_D_layer_for_recon_error: int, 可选 (默认 = 1)

这是鉴别器中隐藏层的索引,将在此层确定查询样本与从潜在空间创建的样本之间的重构误差。

learning_rate_query: float in (0., 1), 可选 (默认值=0.001)

学习率用于反向传播步骤,以在生成器的潜在空间中找到一个近似查询样本的点

epochs_query: int, 可选 (默认=20)

在生成器的潜在空间中近似查询样本的轮次数

预处理bool, 可选 (默认=True)

如果为真,对数据应用标准化处理。

详细int, 可选 (默认=1)

详细模式。 - 0 = 静默 - 1 = 进度条

污染float in (0., 0.5), 可选 (默认=0.1)

数据集的污染程度,即数据集中异常值的比例。在拟合时,这用于定义决策函数的阈值。

decision_scores_

训练数据[0,1]的异常分数。数值越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

plot_learning_curves(start_ind=0, window_smoothening=10)[源代码]
predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.auto_encoder 模块

使用自动编码器进行异常检测

class pyod.models.auto_encoder.AutoEncoder(contamination=0.1, preprocessing=True, lr=0.001, epoch_num=10, batch_size=32, optimizer_name='adam', device=None, random_state=42, use_compile=False, compile_mode='default', verbose=1, optimizer_params: dict = {'weight_decay': 1e-05}, hidden_neuron_list=[64, 32], hidden_activation_name='relu', batch_norm=True, dropout_rate=0.2)[源代码]

基类:BaseDeepLearningDetector

自动编码器 (AE) 是一种用于以无监督方式学习有用数据表示的神经网络类型。与PCA类似,AE可以通过计算重建误差来检测数据中的异常对象。详情请参见 [BAgg15] 第3章。

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • preprocessing (bool, optional (default=True)) – 如果为 True,则在训练模型之前应用预处理程序。

  • lr (float, optional (default=1e-3)) – 优化器的初始学习率。

  • epoch_num (int, optional (default=10)) – 训练的轮数。

  • batch_size (int, optional (default=32)) – 训练的批量大小。

  • optimizer_name (str, optional (default='adam')) – 用于训练模型的优化器的名称。

  • device (str, optional (default=None)) – 用于模型的设备。如果为 None,将自动决定。如果你想使用 MPS,请将其设置为 ‘mps’。

  • random_state (int, optional (default=42)) – 用于重现性的随机种子。

  • use_compile (bool, optional (default=False)) – 是否编译模型。如果为 True,模型将在训练前编译。这仅适用于 PyTorch 版本 >= 2.0.0 且 Python < 3.12。

  • compile_mode (str, optional (default='default')) – 编译模型的模式。可以是“default”、“reduce-overhead”、“max-autotune”或“max-autotune-no-cudagraphs”。详情请参见 https://pytorch.org/docs/stable/generated/torch.compile.html#torch-compile

  • verbose (int, optional (default=1)) – 详细模式。- 0 = 静默 - 1 = 进度条 - 2 = 每轮一行。

  • optimizer_params (dict, optional (default={'weight_decay': 1e-5})) – 优化器的额外参数。例如,optimizer_params={‘weight_decay’: 1e-5}

  • hidden_neuron_list (list, optional (default=[64, 32])) – 每个隐藏层的神经元数量。因此,网络的结构为 [feature_size, 64, 32, 32, 64, feature_size]。

  • hidden_activation_name (str, optional (default='relu')) – 隐藏层中使用的激活函数。

  • batch_norm (boolean, optional (default=True)) – 是否应用批量归一化,参见 https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm1d.html

  • dropout_rate (float in (0., 1), optional (default=0.2)) – 在所有层中使用的dropout。

model

底层自动编码器模型。

类型:

torch.nn.Module

optimizer

用于训练模型的优化器。

类型:

torch.optim

criterion

用于训练模型的损失函数。

类型:

torch.nn.modules

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

build_model()[源代码]

需要在此方法中定义模型。self.feature_size 是输入数据中的特征数量。

decision_function(X, batch_size=None)

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,离群点被赋予更大的异常分数。:param X: 训练输入样本。仅接受稀疏矩阵。

如果它们被基础估计器支持。

参数:

batch_size (int, optional (default=None)) – 处理输入样本的批处理大小。如果未指定,则使用默认批处理大小。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

evaluate(data_loader)

评估深度学习模型。

参数:

data_loader (torch.utils.data.DataLoader) – 用于评估模型的数据加载器。

返回:

outlier_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (numpy array of shape (n_samples,), optional (default=None)) – 输入样本的地面实况。在无监督方法中不使用。

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

save(path)

将模型保存到指定路径。

参数:

path (str) – 保存模型的路径。

train(train_loader)

训练深度学习模型。

参数:

train_loader (torch.utils.data.DataLoader) – 用于训练模型的数据加载器。

training_forward(batch_data)[源代码]

训练模型的前向传播。需要实现的抽象方法。

参数:

batch_data (tuple) – 用于训练模型的批量数据。

返回:

loss – 模型的损失值,如果有多个损失,则为损失值的元组。

返回类型:

float or tuple of float

training_prepare()

pyod.models.auto_encoder_torch 模块

pyod.models.cblof 模块

基于聚类的局部异常因子 (CBLOF)

class pyod.models.cblof.CBLOF(n_clusters=8, contamination=0.1, clustering_estimator=None, alpha=0.9, beta=5, use_weights=False, check_estimator=False, random_state=None, n_jobs=1)[源代码]

基类:BaseDetector

CBLOF 操作符基于聚类局部异常因子计算异常分数。

CBLOF 以数据集和由聚类算法生成的聚类模型作为输入。它使用参数 alpha 和 beta 将聚类分为小聚类和大聚类。然后根据点所属聚类的大小以及到最近大聚类的距离来计算异常分数。

使用基于原始出版物中提出的集群大小的异常因子加权。由于这可能导致意外行为(靠近小集群的异常值未被发现),因此默认情况下禁用此功能。异常值分数仅根据其到最近的大集群中心的距离计算。

默认情况下,kMeans 被用作聚类算法,而不是原始论文中提到的 Squeezer 算法,原因有多种。

详情请参见 [BHXD03]

参数:
  • n_clusters (int, optional (default=8)) – 要形成的簇的数量以及要生成的质心的数量。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • clustering_estimator (Estimator, optional (default=None)) – 用于执行数据聚类的基本聚类算法。应传入一个有效的聚类算法。估计器应具有标准的sklearn API,即fit()和predict()。估计器应具有属性``labels_``和``cluster_centers_``。如果在模型拟合后``cluster_centers_``不在属性中,则将其计算为集群中样本的均值。如果未设置,CBLOF使用KMeans以提高可扩展性。参见https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html

  • alpha (float in (0.5, 1), optional (default=0.9)) – 决定小集群和大集群的系数。大集群中的样本数与小集群中的样本数的比率。

  • beta (int or float in (1,), optional (default=5).) – 决定小簇和大簇的系数。对于按大小排序的簇列表 |C1|, |C2|, …, |Cn|beta = |Ck|/|Ck-1|

  • use_weights (bool, optional (default=False)) – 如果设置为 True,集群的大小将作为异常分数计算中的权重使用。

  • check_estimator (bool, optional (default=False)) – 如果设置为 True,检查基本估计器是否符合 sklearn 标准。 .. 警告:: check_estimator 可能会在 scikit-learn 0.20 及以上版本中抛出错误。

  • random_state (int, RandomState or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

clustering_estimator_

聚类的基本估计器。

类型:

估计器, sklearn 实例

cluster_labels_

训练样本的聚类分配。

类型:

形状列表 (n_samples,)

n_clusters_

实际的聚类数量(可能与 n_clusters 不同)。

类型:

整数

cluster_sizes_

每个集群在用训练数据拟合后的尺寸。

类型:

形状为 (n_clusters_,) 的列表

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

cluster_centers_

每个集群的中心。

类型:

形状为 (n_clusters_, n_features) 的 numpy 数组

small_cluster_labels_

属于小簇的簇分配。

类型:

集群编号列表

large_cluster_labels_

属于大簇的簇分配。

类型:

集群编号列表

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

pyod.models.cof 模块

基于连通性的离群因子(COF)算法

class pyod.models.cof.COF(contamination=0.1, n_neighbors=20, method='fast')[源代码]

基类:BaseDetector

基于连接性的离群因子 (COF) COF 使用数据点的平均链式距离与数据点的 k 个最近邻的平均链式距离的平均值的比率,作为观测值的离群得分。

详情请参见 [BTCFC02]

支持两种版本的 COF:

  • 快速COF:以O(n^2)内存需求为代价计算整个成对距离矩阵。

  • 内存高效 COF:增量计算成对距离。当无法将 n×n 距离矩阵放入内存时,请使用此实现。这会导致线性开销,因为许多距离需要重新计算。

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • n_neighbors (int, optional (default=20)) – 用于 k 近邻查询的默认邻居数量。请注意,n_neighbors 应小于样本数量。如果 n_neighbors 大于提供的样本数量,则将使用所有样本。

  • method (string, optional (default='fast')) – method 的有效值包括: - ‘fast’ 快速 COF,预先计算完整的成对距离矩阵。 - ‘memory’ 内存高效 COF,仅在需要时计算成对距离,但会牺牲计算速度。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

n_neighbors_

用于 k 近邻查询的默认邻居数量。

类型:

整数

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。输入样本的异常分数根据不同的检测器算法计算。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

pyod.models.combination 模块

模型组合功能的集合。

pyod.models.combination.aom(scores, n_buckets=5, method='static', bootstrap_estimators=False, random_state=None)[源代码]

最大值的平均 - 一种结合多个估计器的集成方法。详情请参见 [BAS15]

首先将估计器分为子组,取最大分数作为子组分数。最后,取所有子组异常分数的平均值。

参数:
  • scores (numpy array of shape (n_samples, n_estimators)) – 各种估计器输出的分数矩阵

  • n_buckets (int, optional (default=5)) – 要构建的子组数量

  • method (str, optional (default='static')) – {‘static’, ‘dynamic’},如果为 ‘dynamic’,则使用动态桶大小随机构建子组。

  • bootstrap_estimators (bool, optional (default=False)) – 估计器是否以替换方式抽取。

  • random_state (int, RandomState instance or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

返回:

combined_scores – 综合的异常分数。

返回类型:

Numpy array of shape (n_samples,)

pyod.models.combination.average(scores, estimator_weights=None)[源代码]

通过取平均值来合并多个估计器的异常分数的组合方法。

参数:
  • scores (numpy array of shape (n_samples, n_estimators)) – 在相同样本上多个估计器的得分矩阵。

  • estimator_weights (list of shape (1, n_estimators)) – 如果指定,使用加权平均

返回:

combined_scores – 综合的异常分数。

返回类型:

numpy array of shape (n_samples, )

pyod.models.combination.majority_vote(scores, weights=None)[源代码]

通过多数投票合并多个估计器分数的组合方法。

参数:

scores (numpy array of shape (n_samples, n_estimators)) – 在相同样本上多个估计器的得分矩阵。

权重形状为 (1, n_estimators) 的 numpy 数组

如果指定,使用加权多数权重。

返回:

combined_scores – 综合评分。

返回类型:

numpy array of shape (n_samples, )

pyod.models.combination.maximization(scores)[源代码]

通过取最大值来合并多个估计器的异常分数的组合方法。

参数:

scores (numpy array of shape (n_samples, n_estimators)) – 在相同样本上多个估计器的得分矩阵。

返回:

combined_scores – 综合的异常分数。

返回类型:

numpy array of shape (n_samples, )

pyod.models.combination.median(scores)[源代码]

通过取多个估计器分数的中位数来合并分数的组合方法。

参数:

scores (numpy array of shape (n_samples, n_estimators)) – 在相同样本上多个估计器的得分矩阵。

返回:

combined_scores – 综合评分。

返回类型:

numpy array of shape (n_samples, )

pyod.models.combination.moa(scores, n_buckets=5, method='static', bootstrap_estimators=False, random_state=None)[源代码]

最大化平均值 - 一种结合多个估计器的集成方法。详情请参见 [BAS15]

首先将估计器分为子组,取平均分作为子组分数。最后,取所有子组异常分数的最大值。

参数:
  • scores (numpy array of shape (n_samples, n_estimators)) – 各种估计器输出的分数矩阵

  • n_buckets (int, optional (default=5)) – 要构建的子组数量

  • method (str, optional (default='static')) – {‘static’, ‘dynamic’},如果为 ‘dynamic’,则使用动态桶大小随机构建子组。

  • bootstrap_estimators (bool, optional (default=False)) – 估计器是否以替换方式抽取。

  • random_state (int, RandomState instance or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

返回:

combined_scores – 综合的异常分数。

返回类型:

Numpy array of shape (n_samples,)

pyod.models.cd 模块

Cook’s 距离异常检测 (CD)

class pyod.models.cd.CD(contamination=0.1, model=LinearRegression())[源代码]

基类:BaseDetector

Cook’s 距离可用于识别对模型有负面影响的点。

影响回归模型。每个观测值的杠杆和残差值的组合用于测量。更高的杠杆和残差与更高的库克距离相关。请注意,这种方法是无监督的,并且需要至少两个特征用于 X,以便计算每个数据点的平均库克距离。更多信息请参阅 [BCoo77]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • model (object, optional (default=LinearRegression())) – 用于计算 Cook’s 距离的回归模型

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

用作阈值的修正z分数。基于中位数绝对偏差的修正z分数大于此值的观测值将被分类为异常值。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

pyod.models.copod 模块

基于连接词的异常检测器 (COPOD)

class pyod.models.copod.COPOD(contamination=0.1, n_jobs=1)[源代码]

基类:BaseDetector

COPOD 类用于基于 Copula 的异常检测器。COPOD 是一种基于经验 Copula 模型的无参数、高度可解释的异常检测算法。详情请参见 [BLZB+20]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • n_jobs (optional (default=1)) – 对于 fitpredict ,同时运行的作业数量。如果设置为 -1,则作业数量设置为内核数。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]
使用拟合的检测器预测 X 的原始异常分数。

为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

explain_outlier(ind, columns=None, cutoffs=None, feature_names=None, file_name=None, file_type=None)[源代码]

绘制数据集中给定数据点的维度异常图。

参数:
  • ind (int) – 希望为其获取维度异常图的数据点的索引。

  • columns (list) – 指定用于绘图的特征/维度列表。如果未指定,则使用所有特征。

  • cutoffs (list of floats in (0., 1), optional (default=[0.95, 0.99])) – 维度异常图的显著性截断带。

  • feature_names (list of strings) – 数据集中所有列的显示名称,用于在图表的 x 轴上显示。

  • file_name (string) – 保存图形的名称

  • file_type (string) – 保存图像的文件类型

返回:

绘图 – 数据点索引为 ind 的维度异常图。

返回类型:

matplotlib plot

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中忽略 y。:param X: 输入样本。:type X: 形状为 (n_samples, n_features) 的 numpy 数组 :param y: 未使用,为保持 API 一致性而存在。:type y: 忽略

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.copod.skew(X, axis=0)[源代码]

pyod.models.deep_svdd 模块

深度一类分类用于异常检测

class pyod.models.deep_svdd.DeepSVDD(n_features, c=None, use_ae=False, hidden_neurons=None, hidden_activation='relu', output_activation='sigmoid', optimizer='adam', epochs=100, batch_size=32, dropout_rate=0.2, l2_regularizer=0.1, validation_size=0.1, preprocessing=True, verbose=1, random_state=None, contamination=0.1)[源代码]

基类:BaseDetector

带有自动编码器 (AE) 的深度一类分类器是一种用于以无监督方式学习有用数据表示的神经网络类型。DeepSVDD 在训练神经网络的同时,最小化包含数据网络表示的超球体的体积,迫使网络提取变化的共同因素。类似于 PCA,DeepSVDD 可以通过计算到中心的距离来检测数据中的异常对象。详情请参见 [BRVG+18]

参数:
  • n_features (int,) – 输入数据中的特征数量。

  • c (float, optional (default='forwad_nn_pass')) – Deep SVDD 中心,默认将基于网络初始化的第一次前向传递计算。要获得重复结果,如果 c 设置为 None,请设置 random_state。

  • use_ae (bool, optional (default=False)) – 如果设置为 True,DeepSVDD 的 AutoEncoder 类型将从 hidden_neurons 反转神经元。

  • hidden_neurons (list, optional (default=[64, 32])) – 每个隐藏层的神经元数量。如果 use_ae 为 True,神经元将被反转,例如 [64, 32] -> [64, 32, 32, 64, n_features]

  • hidden_activation (str, optional (default='relu')) – 用于隐藏层的激活函数。所有隐藏层都被强制使用相同类型的激活。参见 https://keras.io/activations/

  • output_activation (str, optional (default='sigmoid')) – 用于输出层的激活函数。参见 https://keras.io/activations/

  • optimizer (str, optional (default='adam')) – 字符串(优化器名称)或优化器实例。参见 https://keras.io/optimizers/

  • epochs (int, optional (default=100)) – 训练模型的轮数。

  • batch_size (int, optional (default=32)) – 每个梯度更新的样本数量。

  • dropout_rate (float in (0., 1), optional (default=0.2)) – 在所有层中使用的dropout。

  • l2_regularizer (float in (0., 1), optional (default=0.1)) – 应用于每一层的 activity_regularizer 的正则化强度。默认使用 l2 正则化器。参见 https://keras.io/regularizers/

  • validation_size (float in (0., 1), optional (default=0.1)) – 用于验证的数据百分比。

  • preprocessing (bool, optional (default=True)) – 如果为真,对数据应用标准化处理。

  • random_state (random_state: int, RandomState instance or None, optional) – (default=None) 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时,这用于定义决策函数的阈值。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.devnet 模块

基于偏差网络的深度异常检测 部分代码改编自 https://github.com/GuansongPang/deviation-network

class pyod.models.devnet.DevNet(network_depth=2, batch_size=512, epochs=50, nb_batch=20, known_outliers=30, cont_rate=0.02, data_format=0, random_seed=42, device=None, contamination=0.1)[源代码]

基类:BaseDetector

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。

输入样本的异常分数是基于拟合的检测器计算的。为了保持一致性,离群值被赋予更高的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')[源代码]

为检测器贴上标签,对样本进行预测,并通过预定义的指标评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (numpy array of shape (n_samples,)) – 与 X 对应的标签或目标值。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确率分数

返回:

分数

返回类型:

float

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.dif 模块

深度隔离森林用于异常检测 (DIF)

class pyod.models.dif.DIF(batch_size=1000, representation_dim=20, hidden_neurons=None, hidden_activation='tanh', skip_connection=False, n_ensemble=50, n_estimators=6, max_samples=256, contamination=0.1, random_state=None, device=None)[源代码]

基类:BaseDetector

深度隔离森林 (DIF) 是 iForest 的扩展。它使用深度表示集成来实现原始数据空间上的非线性隔离。详情请参见 [BXPWW23]

参数:
  • batch_size (int, optional (default=1000)) – 每个梯度更新的样本数量。

  • representation_dim – 表示空间的维度。

  • int – 表示空间的维度。

  • (default=20) (optional) – 表示空间的维度。

  • hidden_neurons – 每个隐藏层的神经元数量。因此,网络的结构为 [n_features, hidden_neurons[0], hidden_neurons[1], …, representation_dim]

  • list – 每个隐藏层的神经元数量。因此,网络的结构为 [n_features, hidden_neurons[0], hidden_neurons[1], …, representation_dim]

  • (default=[64 (optional) – 每个隐藏层的神经元数量。因此,网络的结构为 [n_features, hidden_neurons[0], hidden_neurons[1], …, representation_dim]

  • 32]) – 每个隐藏层的神经元数量。因此,网络的结构为 [n_features, hidden_neurons[0], hidden_neurons[1], …, representation_dim]

  • hidden_activation – 用于隐藏层的激活函数。所有隐藏层都被强制使用相同类型的激活函数。详情请参阅 https://pytorch.org/docs/stable/nn.html 。目前仅支持 ‘relu’: nn.ReLU() ‘sigmoid’: nn.Sigmoid() ‘tanh’: nn.Tanh() 。详情请参阅 pyod/utils/torch_utility.py 。

  • str – 用于隐藏层的激活函数。所有隐藏层都被强制使用相同类型的激活函数。详情请参阅 https://pytorch.org/docs/stable/nn.html 。目前仅支持 ‘relu’: nn.ReLU() ‘sigmoid’: nn.Sigmoid() ‘tanh’: nn.Tanh() 。详情请参阅 pyod/utils/torch_utility.py 。

  • (default='tanh') (optional) – 用于隐藏层的激活函数。所有隐藏层都被强制使用相同类型的激活函数。详情请参阅 https://pytorch.org/docs/stable/nn.html 。目前仅支持 ‘relu’: nn.ReLU() ‘sigmoid’: nn.Sigmoid() ‘tanh’: nn.Tanh() 。详情请参阅 pyod/utils/torch_utility.py 。

  • skip_connection – 如果为真,则在神经网络结构中应用跳跃连接。

  • boolean – 如果为真,则在神经网络结构中应用跳跃连接。

  • (default=False) (optional) – 如果为真,则在神经网络结构中应用跳跃连接。

  • n_ensemble – 深度表示集成成员的数量。

  • int – 深度表示集成成员的数量。

  • (default=50) (optional) – 深度表示集成成员的数量。

  • n_estimators – 每个表示的隔离森林数量。

  • int – 每个表示的隔离森林数量。

  • (default=6) (optional) – 每个表示的隔离森林数量。

  • max_samples – 从 X 中抽取的样本数量,用于训练每个基础隔离树。

  • int – 从 X 中抽取的样本数量,用于训练每个基础隔离树。

  • (default=256) (optional) – 从 X 中抽取的样本数量,用于训练每个基础隔离树。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • random_state (int or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

  • device – 如果为 ‘cuda’,则在 torch 中使用 GPU 加速;如果为 ‘cpu’,则在 torch 中使用 CPU;如果为 None,则自动判断 GPU 是否可用。

  • 'cuda' – 如果为 ‘cuda’,则在 torch 中使用 GPU 加速;如果为 ‘cpu’,则在 torch 中使用 CPU;如果为 None,则自动判断 GPU 是否可用。

  • 'cpu' – 如果为 ‘cuda’,则在 torch 中使用 GPU 加速;如果为 ‘cpu’,则在 torch 中使用 CPU;如果为 None,则自动判断 GPU 是否可用。

  • None (or) – 如果为 ‘cuda’,则在 torch 中使用 GPU 加速;如果为 ‘cpu’,则在 torch 中使用 CPU;如果为 None,则自动判断 GPU 是否可用。

  • (default=None) (optional) – 如果为 ‘cuda’,则在 torch 中使用 GPU 加速;如果为 ‘cpu’,则在 torch 中使用 CPU;如果为 None,则自动判断 GPU 是否可用。

net_lst

表示神经网络的列表。

类型:

torch.Module 列表

iForest_lst

实例化的 iForest 模型列表。

类型:

iForest 列表

x_reduced_lst

训练数据表示的列表

类型:

numpy 数组列表

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.ecod 模块

使用经验累积分布函数 (ECOD) 进行无监督异常检测

class pyod.models.ecod.ECOD(contamination=0.1, n_jobs=1)[源代码]

基类:BaseDetector

ECOD 类用于使用经验累积分布函数 (ECOD) 进行无监督异常检测 ECOD 是一种基于经验 CDF 函数的无参数、高度可解释的异常检测算法。详情请参见 []

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • n_jobs (optional (default=1)) – 对于 fitpredict ,同时运行的作业数量。如果设置为 -1,则作业数量设置为内核数。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]
使用拟合的检测器预测 X 的原始异常分数。

为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

explain_outlier(ind, columns=None, cutoffs=None, feature_names=None, file_name=None, file_type=None)[源代码]

绘制数据集中给定数据点的维度异常图。

参数:
  • ind (int) – 希望为其获取维度异常图的数据点的索引。

  • columns (list) – 指定用于绘图的特征/维度列表。如果未指定,则使用所有特征。

  • cutoffs (list of floats in (0., 1), optional (default=[0.95, 0.99])) – 维度异常图的显著性截断带。

  • feature_names (list of strings) – 数据集中所有列的显示名称,用于在图表的 x 轴上显示。

  • file_name (string) – 保存图形的名称

  • file_type (string) – 保存图像的文件类型

返回:

绘图 – 数据点索引为 ind 的维度异常图。

返回类型:

matplotlib plot

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中忽略 y。:param X: 输入样本。:type X: 形状为 (n_samples, n_features) 的 numpy 数组 :param y: 未使用,为保持 API 一致性而存在。:type y: 忽略

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.ecod.skew(X, axis=0)[源代码]

pyod.models.feature_bagging 模块

特征袋装检测器

class pyod.models.feature_bagging.FeatureBagging(base_estimator=None, n_estimators=10, contamination=0.1, max_features=1.0, bootstrap_features=False, check_detector=True, check_estimator=False, n_jobs=1, random_state=None, combination='average', verbose=0, estimator_params=None)[源代码]

基类:BaseDetector

特征袋装检测器是一种元估计器,它对数据集的多个子样本拟合多个基础检测器,并使用平均或其他组合方法来提高预测准确性并控制过拟合。

子样本的大小始终与原始输入样本大小相同,但特征是从一半到所有特征中随机抽取的。

默认情况下,LOF 被用作基础估计器。然而,任何估计器都可以用作基础估计器,例如 kNN 和 ABOD。

特征袋装首先通过随机选择特征子集来构建 n 个子样本,这增加了基估计器的多样性。

最后,预测分数是通过对所有基础检测器的平均值/最大值生成的。详情请参见 [BLK05]

参数:
  • base_estimator (object or None, optional (default=None)) – 用于拟合数据集随机子集的基础估计器。如果为 None,则基础估计器是一个 LOF 检测器。

  • n_estimators (int, optional (default=10)) – 集成中的基估计器数量。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • max_features (int or float, optional (default=1.0)) – 从 X 中提取用于训练每个基估计器的特征数量。 - 如果为整数,则提取 max_features 个特征。 - 如果为浮点数,则提取 max_features * X.shape[1] 个特征。

  • bootstrap_features (bool, optional (default=False)) – 特征是否以替换方式绘制。

  • check_detector (bool, optional (default=True)) – 如果设置为 True,检查基本估计器是否符合 pyod 标准。

  • check_estimator (bool, optional (default=False)) – 如果设置为 True,检查基本估计器是否符合 sklearn 标准。 .. deprecated:: 0.6.9 check_estimator 将在 pyod 0.8.0 中移除;它将被 check_detector 替代。

  • n_jobs (optional (default=1)) – 对于 fitpredict ,同时运行的作业数量。如果设置为 -1,则作业数量设置为内核数。

  • random_state (int, RandomState or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

  • combination (str, optional (default='average')) – 组合方法: - 如果 ‘average’:取所有检测器的平均值 - 如果 ‘max’:取所有检测器的最大分数

  • verbose (int, optional (default=0)) – 控制构建过程的详细程度。

  • estimator_params (dict, optional (default=None)) – 在实例化一个新的基础估计器时,用作参数的属性列表。如果没有给出,则使用默认参数。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.gmm 模块

基于高斯混合模型(GMM)的异常检测。

class pyod.models.gmm.GMM(n_components=1, covariance_type='full', tol=0.001, reg_covar=1e-06, max_iter=100, n_init=1, init_params='kmeans', weights_init=None, means_init=None, precisions_init=None, random_state=None, warm_start=False, contamination=0.1)[源代码]

基类:BaseDetector

具有更多功能的 scikit-learn 高斯混合模型包装器。无监督异常检测。

详情请参见 [BAgg15] 第二章。

参数:
  • n_components (int, default=1) – 混合成分的数量。

  • covariance_type ({'full', 'tied', 'diag', 'spherical'}, default='full') – 描述要使用的协方差参数类型的字符串。

  • tol (float, default=1e-3) – 收敛阈值。当下界平均增益低于此阈值时,EM迭代将停止。

  • reg_covar (float, default=1e-6) – 非负正则化添加到协方差的对角线上。这有助于确保所有协方差矩阵都是正的。

  • max_iter (int, default=100) – 要执行的 EM 迭代次数。

  • n_init (int, default=1) – 要执行的初始化次数。最佳结果将被保留。

  • init_params ({'kmeans', 'random'}, default='kmeans') – 用于初始化权重、均值和精度的方法。

  • weights_init (array-like of shape (n_components, ), default=None) – 用户提供的初始权重。如果为 None,则使用 init_params 方法初始化权重。

  • means_init (array-like of shape (n_components, n_features), default=None) – 用户提供的初始均值,如果为 None,则使用 init_params 方法初始化均值。

  • precisions_init (array-like, default=None) – 用户提供的初始精度(协方差矩阵的逆)。如果为 None,则使用 ‘init_params’ 方法初始化精度。

  • random_state (int, RandomState instance or None, default=None) – 控制传递给用于初始化参数的方法的随机种子。

  • warm_start (bool, default=False) – 如果 ‘warm_start’ 为 True,则上一次拟合的解将用作下一次调用 fit() 的初始化。

  • verbose (int, default=0) – 启用详细输出。

  • verbose_interval (int, default=10) – 在下一次打印之前完成的迭代次数。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度。

weights_

每个混合成分的权重。

类型:

类似数组的形状 (n_components,)

means_

每个混合成分的均值。

类型:

类似数组的形状 (n_components, n_features)

covariances_

每个混合成分的协方差。

类型:

类似数组

precisions_

混合物中每个成分的精度矩阵。

类型:

类似数组

precisions_cholesky_

每个混合成分的精度矩阵的Cholesky分解。

类型:

类似数组

converged_

当在 fit() 中达到收敛时为 True,否则为 False。

类型:

布尔

n_iter_

EM 达到收敛的最佳拟合所使用的步数。

类型:

整数

lower_bound_

EM 最佳拟合的似然对数(相对于模型训练数据)的下限值。

类型:

浮动

decision_scores_

训练数据中的异常分数。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • sample_weight (array-like, shape (n_samples,)) – 每个样本的权重。按样本重新调整 C。更高的权重迫使分类器在这些点上投入更多注意力。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

property precisions_

混合物中每个成分的精度矩阵。用于 scikit-learn 高斯混合模型属性的装饰器。

property precisions_cholesky_
精度矩阵的 Cholesky 分解

每个混合成分的。

用于 scikit-learn 高斯混合模型属性的装饰器。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

pyod.models.hbos 模块

基于直方图的异常检测 (HBOS)

class pyod.models.hbos.HBOS(n_bins=10, alpha=0.1, tol=0.5, contamination=0.1)[源代码]

基类:BaseDetector

基于直方图的异常检测 (HBOS) 是一种高效的无监督方法。它假设特征独立,并通过构建直方图来计算异常程度。详情请参见 [BGD12]

支持两种HBOS版本:

根据 Birge-Rozenblac 方法 ([BBirgeR06]) 是最优的。

参数:
  • n_bins (int or string, optional (default=10)) – 箱的数量。”auto” 使用 Birge-Rozenblac 方法来自动选择每个特征的最佳箱数。

  • alpha (float in (0, 1), optional (default=0.1)) – 用于防止溢出的正则化器。

  • tol (float in (0, 1), optional (default=0.5)) – 决定处理落在箱子外的样本时的灵活性的参数。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

bin_edges_

箱子的边缘。

类型:

形状为 (n_bins + 1, n_features) 的 numpy 数组

hist_

每个直方图的密度。

类型:

形状为 (n_bins, n_features) 的 numpy 数组

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.iforest 模块

IsolationForest 异常检测器。在 scikit-learn 库中实现。

class pyod.models.iforest.IForest(n_estimators=100, max_samples='auto', contamination=0.1, max_features=1.0, bootstrap=False, n_jobs=1, behaviour='old', random_state=None, verbose=0)[源代码]

基类:BaseDetector

具有更多功能的 scikit-learn 孤立森林包装器。

IsolationForest 通过随机选择一个特征,然后在该特征的最大值和最小值之间随机选择一个分割值来 ‘隔离’ 观测值。详情请参见 [BLTZ08, BLTZ12]

由于递归分区可以用树结构表示,因此隔离样本所需的分割次数相当于从根节点到终止节点的路径长度。

这个路径长度,在这样随机树的森林中平均,是正常性的度量和我们的决策函数。

随机分区会产生明显更短的路径用于异常值。因此,当一片随机树森林共同为特定样本生成较短的路径长度时,它们极有可能是异常值。

参数:
  • n_estimators (int, optional (default=100)) – 集成中的基估计器数量。

  • max_samples (int or float, optional (default="auto")) –

    从 X 中抽取的样本数量,用于训练每个基估计器。

    • 如果是整数,则绘制 max_samples 个样本。

    • 如果是浮点数,则绘制 max_samples * X.shape[0] 个样本。

    • 如果为“auto”,则 max_samples=min(256, n_samples)

    如果 max_samples 大于提供的样本数量,所有样本将被用于所有树(无采样)。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • max_features (int or float, optional (default=1.0)) –

    从 X 中抽取用于训练每个基估计器的特征数量。

    • 如果是整数,则绘制 max_features 个特征。

    • 如果是浮点数,则绘制 max_features * X.shape[1] 个特征。

  • bootstrap (bool, optional (default=False)) – 如果为 True,则单独的树将拟合于通过有放回抽样得到的训练数据的随机子集。如果为 False,则进行无放回抽样。

  • n_jobs (integer, optional (default=1)) – 对于 fitpredict ,同时运行的作业数量。如果设置为 -1,则作业数量设置为内核数。

  • behaviour (str, default='old') – decision_function 的行为可以是 ‘old’ 或 ‘new’。传递 behaviour='new' 会使 decision_function 改变以匹配其他异常检测算法的 API,这将成为未来的默认行为。如 offset_ 属性文档中所详细解释的,decision_function 变得依赖于污染参数,使得 0 成为检测异常值的自然阈值。

  • random_state (int, RandomState instance or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

  • verbose (int, optional (default=0)) – 控制树构建过程的详细程度。

estimators_

拟合的子估计器的集合。

类型:

DecisionTreeClassifier 列表

estimators_samples_

每个基估计器的抽样子集(即,袋内样本)。

类型:

数组列表

max_samples_

实际样本数量

类型:

整数

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

property feature_importances_

基于杂质的特征重要性。越高,特征越重要。特征的重要性计算为该特征带来的标准的(归一化)总减少量。它也被称为基尼重要性。

基于杂质的特征重要性对于高基数特征(许多唯一值)可能会产生误导。请参阅 https://scikit-learn.org/stable/modules/generated/sklearn.inspection.permutation_importance.html 作为替代方案。

返回:

feature_importances_ – 这个数组的值总和为1,除非所有树都是仅由根节点组成的单节点树,在这种情况下,它将是一个全零数组。

返回类型:

ndarray of shape (n_features,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

property max_samples_

实际样本数量。scikit-learn 孤立森林属性的装饰器。

property n_features_in_

在拟合过程中看到的特征数量。用于 scikit-learn 孤立森林属性的装饰器。

property offset_

用于从原始分数定义决策函数的偏移量。scikit-learn 孤立森林属性的装饰器。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

pyod.models.inne 模块

基于隔离的异常检测使用最近邻集成。部分代码改编自 https://github.com/xhan97/inne

class pyod.models.inne.INNE(n_estimators=200, max_samples='auto', contamination=0.1, random_state=None)[源代码]

基类:BaseDetector

基于隔离的异常检测使用最近邻集成。

INNE 算法使用最近邻集合来隔离异常。它使用子样本将数据空间划分为区域,并为每个区域确定一个隔离分数。由于每个区域适应局部分布,计算的隔离分数是相对于局部邻域的局部度量,使其能够检测全局和局部异常。INNE 具有线性时间复杂度,能够高效处理具有复杂分布的大型和高维数据集。

详情请参见 [BBTA+18]

参数:
  • n_estimators (int, default=200) – 集成中的基估计器数量。

  • max_samples (int or float, optional (default="auto")) –

    从 X 中抽取的样本数量,用于训练每个基估计器。

    • 如果是整数,则绘制 max_samples 个样本。

    • 如果是浮点数,则绘制 max_samples * X.shape[0]` 个样本。

    • 如果为“auto”,则 max_samples=min(8, n_samples)

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • random_state (int, RandomState instance or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

max_samples_

实际样本数量

类型:

整数

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.kde 模块

无监督异常检测的核密度估计(KDE)。

class pyod.models.kde.KDE(contamination=0.1, bandwidth=1.0, algorithm='auto', leaf_size=30, metric='minkowski', metric_params=None)[源代码]

基类:BaseDetector

用于异常检测的 KDE 类。

对于一个观测值,其负对数概率密度可以视为离群得分。

详情请参见 [BLLP07]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • bandwidth (float, optional (default=1.0)) – 内核的带宽。

  • algorithm ({'auto', 'ball_tree', 'kd_tree'}, optional) – 用于计算核密度估计器的算法: - ‘ball_tree’ 将使用 BallTree - ‘kd_tree’ 将使用 KDTree - ‘auto’ 将尝试根据传递给 fit() 方法的值决定最合适的算法。

  • leaf_size (int, optional (default = 30)) – 传递给 BallTree 的叶大小。这会影响树的构建和查询速度,以及存储树所需的内存。最佳值取决于问题的性质。

  • metric (string or callable, default 'minkowski') – 用于距离计算的度量。可以使用 scikit-learn 或 scipy.spatial.distance 中的任何度量。如果 metric 是一个可调用函数,它会在每对实例(行)上调用,并记录结果值。可调用函数应接受两个数组作为输入,并返回一个表示它们之间距离的值。这适用于 Scipy 的度量,但不如将度量名称作为字符串传递效率高。不支持距离矩阵。metric 的有效值包括: - 来自 scikit-learn:[‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’] - 来自 scipy.spatial.distance:[‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’] 有关这些度量的详细信息,请参阅 scipy.spatial.distance 的文档。

  • metric_params (dict, optional (default = None)) – 度量函数的附加关键字参数。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.knn 模块

k-近邻检测器 (kNN)

class pyod.models.knn.KNN(contamination=0.1, n_neighbors=5, method='largest', radius=1.0, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, n_jobs=1, **kwargs)[源代码]

基类:BaseDetector

kNN 类用于异常检测。对于一个观测值,它到其第 k 个最近邻的距离可以被视为异常分数。这可以被视为一种测量密度的方法。详情请参见 [BAP02, BRRS00]

支持三种 kNN 检测器:

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • n_neighbors (int, optional (default = 5)) – 用于 k 近邻查询的默认邻居数量。

  • method (str, optional (default='largest')) – {‘largest’, ‘mean’, ‘median’} - ‘largest’: 使用到第k个邻居的距离作为异常分数 - ‘mean’: 使用所有k个邻居的平均值作为异常分数 - ‘median’: 使用到k个邻居距离的中位数作为异常分数

  • radius (float, optional (default = 1.0)) – radius_neighbors 查询默认使用的参数空间范围。

  • algorithm ({'auto', 'ball_tree', 'kd_tree', 'brute'}, optional) – 用于计算最近邻的算法: - ‘ball_tree’ 将使用 BallTree - ‘kd_tree’ 将使用 KDTree - ‘brute’ 将使用暴力搜索。 - ‘auto’ 将根据传递给 fit() 方法的值尝试决定最合适的算法。 注意:在稀疏输入上拟合将覆盖此参数的设置,使用暴力搜索。 .. deprecated:: 0.74 algorithm 在 PyOD 0.7.4 中已被弃用,并且在 0.7.6 中将不再可能使用。它必须使用 BallTree 以保持一致性。

  • leaf_size (int, optional (default = 30)) – 传递给 BallTree 的叶大小。这会影响树的构建和查询速度,以及存储树所需的内存。最佳值取决于问题的性质。

  • metric (string or callable, default 'minkowski') – 用于距离计算的度量。可以使用来自 scikit-learn 或 scipy.spatial.distance 的任何度量。如果 metric 是一个可调用函数,它会在每对实例(行)上调用,并记录结果值。可调用函数应接受两个数组作为输入,并返回一个表示它们之间距离的值。这适用于 Scipy 的度量,但效率不如将度量名称作为字符串传递。不支持距离矩阵。metric 的有效值包括: - 来自 scikit-learn: [‘cityblock’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’] - 来自 scipy.spatial.distance: [‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’] 有关这些度量的详细信息,请参阅 scipy.spatial.distance 的文档。

  • p (integer, optional (default = 2)) – sklearn.metrics.pairwise.pairwise_distances 的 Minkowski 度量参数。当 p = 1 时,这等同于使用 manhattan_distance (l1),而当 p = 2 时,等同于使用 euclidean_distance (l2)。对于任意 p,使用 minkowski_distance (l_p)。参见 http://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.pairwise_distances

  • metric_params (dict, optional (default = None)) – 度量函数的附加关键字参数。

  • n_jobs (int, optional (default = 1)) – 用于邻居搜索的并行作业数。如果为 -1,则作业数设置为 CPU 核心数。仅影响 kneighbors 和 kneighbors_graph 方法。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.kpca 模块

核主成分分析 (KPCA) 异常检测器

class pyod.models.kpca.KPCA(contamination=0.1, n_components=None, n_selected_components=None, kernel='rbf', gamma=None, degree=3, coef0=1, kernel_params=None, alpha=1.0, eigen_solver='auto', tol=0, max_iter=None, remove_zero_eig=False, copy_X=True, n_jobs=None, sampling=False, subset_size=20, random_state=None)[源代码]

基类:BaseDetector

用于异常检测的 KPCA 类。

PCA 在由核唯一确定的特征空间上进行,特征空间上的重构误差被用作异常分数。

参见 [BHof07] Heiko Hoffmann, “Kernel PCA for novelty detection,” Pattern Recognition, vol.40, no.3, pp. 863-874, 2007. https://www.sciencedirect.com/science/article/pii/S0031320306003414 了解更多详情。

参数:
  • n_components (int, optional (default=None)) – 组件数量。如果为 None,则保留所有非零组件。

  • n_selected_components (int, optional (default=None)) – 用于计算异常分数的选定主成分数量。它不一定等于主成分的总数。如果未设置,则使用所有主成分。

  • kernel (string {'linear', 'poly', 'rbf', 'sigmoid',) – ‘cosine’, ‘precomputed’}, 可选 (默认=’rbf’) 用于PCA的内核。

  • gamma (float, optional (default=None)) – rbf、poly 和 sigmoid 核的核系数。其他核忽略此参数。如果 gammaNone,则将其设置为 1/n_features

  • degree (int, optional (default=3)) – 多项式核的度数。被其他核忽略。

  • coef0 (float, optional (default=1)) – 多项式和S型核函数中的独立项。其他核函数忽略此项。

  • kernel_params (dict, optional (default=None)) – 内核的参数(关键字参数)和值作为可调用对象传递。其他内核忽略此项。

  • alpha (float, optional (default=1.0)) – 岭回归的超参数,用于学习逆变换(当 inverse_transform=True 时)。

  • eigen_solver (string, {'auto', 'dense', 'arpack', 'randomized'}, default='auto') – 选择要使用的特征求解器。如果 n_components 远小于训练样本的数量,随机化(或一定程度上是 arpack)可能比密集特征求解器更高效。随机化 SVD 是根据 Halko 等人的方法进行的。 auto : 根据 n_samples(训练样本的数量)和 n_components 选择求解器:如果提取的组件数量小于 10(严格)且样本数量大于 200(严格),则启用 ‘arpack’ 方法。否则,计算精确的完整特征值分解,并可选地在此后截断(’dense’ 方法)。 dense : 通过 scipy.linalg.eigh 调用标准 LAPACK 求解器运行精确的完整特征值分解,并通过后处理选择组件。 arpack : 运行截断为 n_components 的 SVD,通过 scipy.sparse.linalg.eigsh 调用 ARPACK 求解器。它要求严格地 0 < n_components < n_samples randomized : 运行随机化 SVD。 实现根据其模选择特征值;因此,如果核不是半正定的,使用此方法可能会导致意外结果。

  • tol (float, optional (default=0)) – arpack 的收敛容差。如果为 0,arpack 将选择最佳值。

  • max_iter (int, optional (default=None)) – arpack 的最大迭代次数。如果为 None,arpack 将选择最佳值。

  • remove_zero_eig (bool, optional (default=False)) – 如果为 True,则所有特征值为零的组件将被移除,因此输出中的组件数量可能小于 n_components(有时甚至由于数值不稳定性而变为零)。当 n_components 为 None 时,此参数被忽略,无论是否移除特征值为零的组件。

  • copy_X (bool, optional (default=True)) – 如果为 True,输入 X 将被模型复制并存储在 X_fit_ 属性中。如果 X 不会再有进一步的更改,设置 copy_X=False 可以通过存储引用来节省内存。

  • n_jobs (int, optional (default=None)) – The number of parallel jobs to run. None means 1 unless in a joblib.parallel_backend context. -1 means using all processors.

  • sampling (bool, optional (default=False)) – 如果为真,从数据集中进行采样子集的操作只会执行一次,以减少时间复杂度同时保持检测性能。

  • subset_size (float in (0., 1.0) or int (0, n_samples), optional (default=20)) – 如果采样为 True,则指定子集的大小。

  • random_state (int, RandomState instance or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.lmdd 模块

线性模型偏差基异常检测 (LMDD)。

class pyod.models.lmdd.LMDD(contamination=0.1, n_iter=50, dis_measure='aad', random_state=None)[源代码]

基类:BaseDetector

基于偏差的异常检测的线性方法。

LMDD 采用了平滑因子的概念,该因子指示通过从数据集中移除一个子集的元素可以减少多少不相似性。更多信息请参阅 [BAAR96]

注意:此实现进行了轻微修改,使其输出分数而不是标签。

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • n_iter (int, optional (default=50)) – 在每次迭代中,输入的顺序被随机化后重复处理。注意,n_iter 是一个非常重要的因素,它影响着准确性。迭代次数越多,准确性越高,但执行时间也会越长。

  • dis_measure (str, optional (default='aad')) – 用于计算点的平滑因子的不相似度度量,可用选项: - ‘aad’: 平均绝对偏差 - ‘var’: 方差 - ‘iqr’: 四分位距

  • random_state (int, RandomState instance or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.loda 模块

Loda: 轻量级在线异常检测器 改编自tilitools (https://github.com/nicococo/tilitools) 由

class pyod.models.loda.LODA(contamination=0.1, n_bins=10, n_random_cuts=100)[源代码]

基类:BaseDetector

Loda: 轻量级在线异常检测器。更多信息请参见 [BPevny16]

支持两种版本的LODA: - 静态箱数:对所有随机切割使用静态数量的箱。 - 自动箱数:每个随机切割使用被认为合适的箱数。

根据 Birge-Rozenblac 方法达到最优 ([BBirgeR06])。

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • n_bins (int or string, optional (default = 10)) – 直方图的箱数。如果设置为“auto”,将使用 Birge-Rozenblac 方法自动确定最佳箱数。

  • n_random_cuts (int, optional (default = 100)) – 随机切割的数量。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.lof 模块

局部异常因子 (LOF)。在 scikit-learn 库中实现。

class pyod.models.lof.LOF(n_neighbors=20, algorithm='auto', leaf_size=30, metric='minkowski', p=2, metric_params=None, contamination=0.1, n_jobs=1, novelty=True)[源代码]

基类:BaseDetector

带有更多功能的 scikit-learn LOF 类包装器。使用局部异常因子(LOF)进行无监督异常检测。

每个样本的异常分数称为局部异常因子。它衡量给定样本相对于其邻居的密度局部偏差。局部性在于异常分数取决于对象相对于周围邻域的隔离程度。更准确地说,局部性由k近邻给出,其距离用于估计局部密度。通过比较样本的局部密度与其邻居的局部密度,可以识别出密度远低于其邻居的样本。这些被认为是异常值。详情请参见 [BBKNS00]

参数:
  • n_neighbors (int, optional (default=20)) – 用于 kneighbors 查询的默认邻居数量。如果 n_neighbors 大于提供的样本数量,则将使用所有样本。

  • algorithm ({'auto', 'ball_tree', 'kd_tree', 'brute'}, optional) – 用于计算最近邻的算法: - ‘ball_tree’ 将使用 BallTree - ‘kd_tree’ 将使用 KDTree - ‘brute’ 将使用暴力搜索。 - ‘auto’ 将尝试根据传递给 fit() 方法的值决定最合适的算法。 注意:在稀疏输入上拟合将覆盖此参数的设置,使用暴力搜索。

  • leaf_size (int, optional (default=30)) – 传递给 BallTreeKDTree 的叶子大小。这会影响树的构建和查询速度,以及存储树所需的内存。最佳值取决于问题的性质。

  • metric (string or callable, default 'minkowski') – 用于距离计算的度量。可以使用来自 scikit-learn 或 scipy.spatial.distance 的任何度量。如果为 ‘precomputed’,则期望训练输入 X 为距离矩阵。如果度量是一个可调用函数,它会在每一对实例(行)上调用,并记录结果值。该可调用函数应接受两个数组作为输入,并返回一个表示它们之间距离的值。这适用于 Scipy 的度量,但效率低于将度量名称作为字符串传递。度量的有效值包括: - 来自 scikit-learn:[‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’] - 来自 scipy.spatial.distance:[‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’] 有关这些度量的详细信息,请参阅 scipy.spatial.distance 的文档:http://docs.scipy.org/doc/scipy/reference/spatial.distance.html

  • p (integer, optional (default = 2)) – sklearn.metrics.pairwise.pairwise_distances 的 Minkowski 度量参数。当 p = 1 时,这等同于使用 manhattan_distance (l1),而当 p = 2 时,等同于使用 euclidean_distance (l2)。对于任意 p,使用 minkowski_distance (l_p)。参见 http://scikit-learn.org/stable/modules/generated/sklearn.metrics.pairwise.pairwise_distances

  • metric_params (dict, optional (default = None)) – 度量函数的附加关键字参数。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时,这用于定义决策函数的阈值。

  • n_jobs (int, optional (default = 1)) – 用于邻居搜索的并行作业数。如果为 -1,则作业数设置为 CPU 核心数。仅影响 kneighbors 和 kneighbors_graph 方法。

  • novelty (bool (default=False)) – 默认情况下,LocalOutlierFactor 仅用于异常检测(novelty=False)。如果您想将 LocalOutlierFactor 用于新奇检测,请将 novelty 设置为 True。在这种情况下,请注意您应该仅对新未见数据使用 predict、decision_function 和 score_samples,而不是在训练集上使用。

n_neighbors_

用于 kneighbors 查询的实际邻居数量。

类型:

整数

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.loci 模块

局部相关积分 (LOCI)。部分代码改编自 https://github.com/Cloudy10/loci

class pyod.models.loci.LOCI(contamination=0.1, alpha=0.5, k=3)[源代码]

基类:BaseDetector

局部相关积分。

LOCI 在检测异常点和异常点群(也称为微簇)方面非常有效,具有以下优势和新颖性:(a) 它提供了一个自动的、数据驱动的截止点来确定一个点是否为异常点——相比之下,以前的方法迫使用户选择截止点,而没有任何关于哪个截止值最适合给定数据集的提示。(b) 它可以为每个点提供一个 LOCI 图;该图总结了点附近数据的大量信息,确定簇、微簇、它们的直径以及簇间距离。现有的任何异常点检测方法都无法匹配这一特性,因为它们只为每个点输出一个单一的数值:其异常分数。(c) 它的计算速度可以与之前最好的方法一样快。更多信息请参阅 [BPKGF03]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • alpha (int, default = 0.5) – neighbourhood 参数测量应该考虑多大的邻域为“局部”。

  • k (int, default = 3) – 用于确定一个点是否应被视为异常值的异常值截断阈值。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

示例

>>> from pyod.models.loci import LOCI
>>> from pyod.utils.data import generate_data
>>> n_train = 50
>>> n_test = 50
>>> contamination = 0.1
>>> X_train, y_train, X_test, y_test = generate_data(
...     n_train=n_train, n_test=n_test,
...     contamination=contamination, random_state=42)
>>> clf = LOCI()
>>> clf.fit(X_train)
LOCI(alpha=0.5, contamination=0.1, k=None)
decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。

输入样本的异常分数是基于拟合的检测器计算的。为了保持一致性,离群值被赋予更高的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

使用 X 作为训练数据拟合模型。

参数:
  • X (array, shape (n_samples, n_features)) – 训练数据。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.lunar 模块

LUNAR: 通过图神经网络统一局部异常检测方法

class pyod.models.lunar.LUNAR(model_type='WEIGHT', n_neighbours=5, negative_sampling='MIXED', val_size=0.1, scaler=MinMaxScaler(), epsilon=0.1, proportion=1.0, n_epochs=200, lr=0.001, wd=0.1, verbose=0, contamination=0.1)[源代码]

基类:BaseDetector

LUNAR 类用于异常检测。详情请参见 https://www.aaai.org/AAAI22Papers/AAAI-51.GoodgeA.pdf。对于一个观测值,其到其 k 个最近邻的距离的有序列表输入到一个神经网络中,输出以下之一:

  1. SCORE_MODEL: 网络直接输出异常分数。

  2. WEIGHT_MODEL: 网络为 k 个距离输出一组权重,异常分数即为

    加权距离之和。

详情请参见 [BGHNN22]

参数:
  • model_type (str in ['WEIGHT', 'SCORE'], optional (default = 'WEIGHT')) – 是否使用 WEIGHT_MODEL 或 SCORE_MODEL 进行异常评分。

  • n_neighbors (int, optional (default = 5)) – 用于 k 近邻查询的默认邻居数量。

  • negative_sampling (str in ['UNIFORM', 'SUBSPACE', MIXED'], optional (default = 'MIXED)) – 要使用的负样本类型: - ‘UNIFORM’:均匀分布的样本 - ‘SUBSPACE’:子空间扰动(在特征子集中添加随机噪声) - ‘MIXED’:两种样本类型的组合

  • val_size (float in [0,1], optional (default = 0.1)) – 用于模型验证的样本比例

  • scaler (object in {StandardScaler(), MinMaxScaler(), optional (default = MinMaxScaler())) – 数据规范化方法

  • epsilon (float, optional (default = 0.1)) – 生成负样本的超参数。较小的 epsilon 会导致负样本与正常样本更相似。

  • proportion (float, optional (default = 1.0)) – 用于相对于正常训练样本数量的负样本比例的超参数。

  • n_epochs (int, optional (default = 200)) – 训练神经网络的周期数。

  • lr (float, optional (default = 0.001)) – 学习率。

  • wd (float, optional (default = 0.1)) – 权重衰减。

  • verbose (int in {0,1}, optional (default = 0):) – 查看或隐藏训练进度

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。为了保持一致性,异常值被赋予更高的异常分数。:param X: 训练输入样本。:type X: 形状为 (n_samples, n_features) 的 numpy 数组

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。假设所有训练样本的 y 为 0。:param X: 输入样本。:type X: 形状为 (n_samples, n_features) 的 numpy 数组 :param y: 所有训练样本的 y 被覆盖为 0(假设为正常)。:type y: 忽略

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.lscp 模块

局部选择性组合并行异常集合 (LSCP)。改编自原始实现。

class pyod.models.lscp.LSCP(detector_list, local_region_size=30, local_max_features=1.0, n_bins=10, random_state=None, contamination=0.1)[源代码]

基类:BaseDetector

并行异常检测集成中的局部选择组合

LSCP 是一种无监督的并行异常检测集成方法,它在测试实例的局部区域内选择有能力的检测器。此实现使用了一种最大值平均策略。首先,一组异构的基础检测器被拟合到训练数据上,然后通过取每个训练实例的最大异常分数来生成伪真实标签。

对于每个测试实例:1) 局部区域被定义为在多次迭代中出现频率高于定义阈值的随机采样特征子空间中的最近训练点集合。

2) Using the local region, a local pseudo ground truth is defined and the pearson correlation is calculated between each base detector’s training outlier scores and the pseudo ground truth.

3) A histogram is built out of pearson correlation scores; detectors in the largest bin are selected as competent base detectors for the given test instance.

4) The average outlier score of the selected competent detectors is taken to be the final score.

详情请参见 [BZNHL19]

参数:
  • detector_list (List, length must be greater than 1) – PyOD 中的基础无监督异常检测器。(注意:需要 fit 和 decision_function 方法)

  • local_region_size (int, optional (default=30)) – 在局部区域生成过程的每次迭代中要考虑的训练点数量(默认为30)。

  • local_max_features (float in (0.5, 1.), optional (default=1.0)) – 在定义局部区域时考虑的最大特征数量比例(默认值为1.0)。

  • n_bins (int, optional (default=10)) – 选择局部区域时要使用的箱数

  • random_state (RandomState, optional (default=None)) – 一个随机数生成器实例,用于定义随机排列生成器的状态。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染量,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值(默认为0.1)。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

示例

>>> from pyod.utils.data import generate_data
>>> from pyod.utils.utility import standardizer
>>> from pyod.models.lscp import LSCP
>>> from pyod.models.lof import LOF
>>> X_train, y_train, X_test, y_test = generate_data(
...     n_train=50, n_test=50,
...     contamination=0.1, random_state=42)
>>> X_train, X_test = standardizer(X_train, X_test)
>>> detector_list = [LOF(), LOF()]
>>> clf = LSCP(detector_list)
>>> clf.fit(X_train)
LSCP(...)
decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.mad 模块

中位数绝对偏差 (MAD) 算法。严格用于单变量数据。

class pyod.models.mad.MAD(threshold=3.5, contamination=0.1)[源代码]

基类:BaseDetector

中位数绝对偏差:用于测量数据点与中位数之间的距离,以中位数距离为单位。详情请参见 [BIH93]

参数:

threshold (float, optional (default=3.5)) – 用作阈值的修正z分数。基于中位数绝对偏差的修正z分数大于此值的观测值将被分类为异常值。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

用作阈值的修正z分数。基于中位数绝对偏差的修正z分数大于此值的观测值将被分类为异常值。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。输入样本的异常分数根据不同的检测器算法计算。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。注意 n_features 必须等于 1。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。注意 n_features 必须等于 1。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.mcd 模块

使用最小协方差行列式 (MCD) 进行异常检测

class pyod.models.mcd.MCD(contamination=0.1, store_precision=True, assume_centered=False, support_fraction=None, random_state=None)[源代码]

基类:BaseDetector

使用最小协方差行列式(MCD)检测高斯分布数据集中的异常值:协方差的稳健估计。

最小协方差行列式协方差估计器应用于高斯分布数据,但在从单峰对称分布中提取的数据上仍然可能相关。它不适用于多峰数据(用于拟合MinCovDet对象的算法在这种情况下可能会失败)。应考虑投影追踪方法来处理多峰数据集。

首先拟合一个最小协方差行列式模型,然后计算马氏距离作为数据的异常程度。

详情请参见 [BHR04, BRD99]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • store_precision (bool) – 指定是否存储估计的精度。

  • assume_centered (bool) – 如果为 True,则计算稳健位置和协方差估计的支持度,并从中重新计算协方差估计,而不对数据进行中心化处理。这对于处理均值显著等于零但并非完全为零的数据非常有用。如果为 False,则直接使用 FastMCD 算法计算稳健位置和协方差,不进行额外处理。

  • support_fraction (float, 0 < support_fraction < 1) – 在原始MCD估计的支持中要包含的点的比例。默认值为None,这意味着将在算法中使用支持分数的最小值:[n_sample + n_features + 1] / 2

  • random_state (int, RandomState instance or None, optional (default=None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

raw_location_

修正和重新加权前的原始鲁棒估计位置。

类型:

类数组,形状 (n_features,)

raw_covariance_

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

类型:

类数组,形状 (n_features, n_features)

raw_support_

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

类型:

类数组,形状 (n_samples,)

location_

估计的稳健位置

类型:

类数组,形状 (n_features,)

covariance_

估计的稳健协方差矩阵

类型:

类数组,形状 (n_features, n_features)

precision_

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

类型:

类数组,形状 (n_features, n_features)

support_

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

类型:

类数组,形状 (n_samples,)

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器被拟合,这个值就可用。训练集(在调用 :meth:`fit 时)观测值的马氏距离。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.mo_gaal 模块

多目标生成对抗主动学习。部分代码改编自 https://github.com/leibinghe/GAAL-based-outlier-detection

class pyod.models.mo_gaal.MO_GAAL(k=10, stop_epochs=20, lr_d=0.01, lr_g=0.0001, momentum=0.9, contamination=0.1)[源代码]

基类:BaseDetector

多目标生成对抗主动学习。

MO_GAAL 直接生成信息丰富的潜在异常值,以帮助分类器描述一个能够有效分离异常值与正常数据的边界。此外,为了防止生成器陷入模式崩溃问题,SO-GAAL 的网络结构从单一生成器(SO-GAAL)扩展到具有不同目标的多个生成器(MO-GAAL),以生成整个数据集的合理参考分布。更多信息请参阅 [BLLZ+19]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • k (int, optional (default=10)) – 子生成器的数量。

  • stop_epochs (int, optional (default=20)) – 训练的轮数。总的训练轮数等于 stop_epochs 的三倍。

  • lr_d (float, optional (default=0.01)) – 判别器的学习率。

  • lr_g (float, optional (default=0.0001)) – 生成器的学习率。

  • momentum (float, optional (default=0.9)) – SGD 的动量参数。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.ocsvm 模块

单类SVM检测器。基于scikit-learn库实现。

class pyod.models.ocsvm.OCSVM(kernel='rbf', degree=3, gamma='auto', coef0=0.0, tol=0.001, nu=0.5, shrinking=True, cache_size=200, verbose=False, max_iter=-1, contamination=0.1)[源代码]

基类:BaseDetector

带有更多功能的 scikit-learn 单类 SVM 类的包装器。无监督的异常检测。

估计高维分布的支持度。

该实现基于 libsvm。参见 http://scikit-learn.org/stable/modules/svm.html#svm-outlier-detection[BScholkopfPST+01]

参数:
  • kernel (string, optional (default='rbf')) – 指定算法中使用的内核类型。它必须是 ‘linear’, ‘poly’, ‘rbf’, ‘sigmoid’, ‘precomputed’ 之一,或者是一个可调用对象。如果没有指定,将使用 ‘rbf’。如果给定了一个可调用对象,它将用于预计算内核矩阵。

  • nu (float, optional) – 训练误差的比例的上限和支持向量比例的下限。应在区间 (0, 1] 内。默认取 0.5。

  • degree (int, optional (default=3)) – 多项式核函数(’poly’)的度数。被所有其他核函数忽略。

  • gamma (float, optional (default='auto')) – 用于 ‘rbf’、’poly’ 和 ‘sigmoid’ 的核系数。如果 gamma 是 ‘auto’,则将使用 1/n_features 代替。

  • coef0 (float, optional (default=0.0)) – 核函数中的独立项。它仅在 ‘poly’ 和 ‘sigmoid’ 中有效。

  • tol (float, optional) – 停止准则的容差。

  • shrinking (bool, optional) – 是否使用收缩启发式方法。

  • cache_size (float, optional) – 指定内核缓存的大小(以MB为单位)。

  • verbose (bool, default: False) – 启用详细输出。请注意,此设置利用了 libsvm 中的每个进程运行时设置,如果启用,在多线程环境中可能无法正常工作。

  • max_iter (int, optional (default=-1)) – 求解器内部的迭代硬限制,或 -1 表示无限制。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

support_

支持向量的索引。

类型:

类数组, 形状 = [n_SV]

support_vectors_

支持向量。

类型:

类数组,形状 = [nSV, n_features]

dual_coef_

决策函数中支持向量的系数。

类型:

数组, 形状 = [1, n_SV]

coef_

分配给特征的权重(原始问题中的系数)。这仅在采用线性核的情况下可用。

coef_ 是从 dual_coef_support_vectors_ 派生的只读属性

类型:

array, shape = [1, n_features]

intercept_

决策函数中的常数。

类型:

数组, 形状 = [1,]

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None, sample_weight=None, **params)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • sample_weight (array-like, shape (n_samples,)) – 每个样本的权重。按样本重新调整 C。更高的权重迫使分类器在这些点上投入更多注意力。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.pca 模块

主成分分析 (PCA) 异常检测器

class pyod.models.pca.PCA(n_components=None, n_selected_components=None, contamination=0.1, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', random_state=None, weighted=True, standardization=True)[源代码]

基类:BaseDetector

主成分分析 (PCA) 可以用于检测异常值。PCA 是一种使用数据奇异值分解的线性降维方法,用于将其投影到低维空间。

在这个过程中,数据的协方差矩阵可以分解为正交向量,称为特征向量,与特征值相关联。具有高特征值的特征向量捕获了数据中的大部分方差。

因此,由k个特征向量构建的低维超平面可以捕捉数据中的大部分方差。然而,离群点与正常数据点不同,这在由小特征值的特征向量构建的超平面上更为明显。

因此,异常值分数可以作为样本在所有特征向量上的投影距离之和获得。详情请参见 [BAgg15, BSCSC03]

Score(X) = 每个样本到由选定特征向量构建的超平面的加权欧几里得距离之和

参数:
  • n_components (int, float, None or string) –

    保留的组件数量。如果未设置 n_components,则保留所有组件:

    n_components == min(n_samples, n_features)
    

    如果 n_components == ‘mle’ 且 svd_solver == ‘full’,则使用 Minka 的 MLE 来猜测维度。如果 0 < n_components < 1 且 svd_solver == ‘full’,则选择组件数量,使得需要解释的方差量大于 n_components 指定的百分比。对于 svd_solver == ‘arpack’,n_components 不能等于 n_features。

  • n_selected_components (int, optional (default=None)) – 用于计算异常分数的选定主成分数量。它不一定等于主成分的总数。如果未设置,则使用所有主成分。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • copy (bool (default True)) – 如果为 False,传递给 fit 的数据将被覆盖,运行 fit(X).transform(X) 将不会产生预期的结果,请改用 fit_transform(X)。

  • whiten (bool, optional (default False)) – 当设置为 True 时(默认是 False),components_ 向量会乘以 n_samples 的平方根,然后除以奇异值,以确保输出的各分量之间不相关且具有单位方差。白化会从变换后的信号中移除一些信息(各分量的相对方差尺度),但有时可以通过使数据符合某些硬编码假设来提高下游估计器的预测准确性。

  • svd_solver (string {'auto', 'full', 'arpack', 'randomized'}) – auto : 解算器根据 X.shapen_components 的默认策略选择:如果输入数据大于 500x500 且要提取的组件数量小于数据最小维度的 80%,则启用更高效的 ‘randomized’ 方法。否则,计算精确的完整 SVD 并在之后选择性地截断。full : 通过 scipy.linalg.svd 调用标准 LAPACK 解算器运行精确的完整 SVD,并通过后处理选择组件。arpack : 通过 scipy.sparse.linalg.svds 调用 ARPACK 解算器运行截断为 n_components 的 SVD。它要求严格 0 < n_components < X.shape[1]。randomized : 通过 Halko 等人的方法运行随机 SVD。

  • tol (float >= 0, optional (default .0)) – svd_solver == ‘arpack’ 计算的奇异值的容差。

  • iterated_power (int >= 0, or 'auto', (default 'auto')) – 由 svd_solver == ‘randomized’ 计算的幂方法的迭代次数。

  • random_state (int, RandomState instance or None, optional (default None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。当 svd_solver == ‘arpack’ 或 ‘randomized’ 时使用。

  • weighted (bool, optional (default=True)) – 如果为真,特征值将用于分数计算。特征值较小的特征向量在异常分数计算中具有更大的重要性。

  • standardization (bool, optional (default=True)) – 如果为真,首先执行标准化以将数据转换为零均值和单位方差。请参见 http://scikit-learn.org/stable/auto_examples/preprocessing/plot_scaling_importance.html

components_

特征空间中的主轴,表示数据中最大方差的方向。这些成分按 explained_variance_ 排序。

类型:

array, 形状 (n_components, n_features)

explained_variance_

所选成分解释的方差量。

等于 X 的协方差矩阵的 n_components 个最大特征值。

类型:

数组,形状 (n_components,)

explained_variance_ratio_

每个选定成分解释的方差百分比。

如果未设置 n_components ,则存储所有组件,并且解释的方差总和等于 1.0。

类型:

数组,形状 (n_components,)

singular_values_

每个选定组件对应的奇异值。这些奇异值等于低维空间中 n_components 变量的2-范数。

类型:

数组,形状 (n_components,)

mean_

每个特征的经验均值,从训练集中估计得出。

等于 X.mean(axis=0)

类型:

数组,形状 (n_features,)

n_components_

估计的组件数量。当 n_components 设置为 ‘mle’ 或 0 到 1 之间的数字(且 svd_solver == ‘full’)时,此数量从输入数据中估计。否则它等于参数 n_components,如果 n_components 为 None,则等于 n_features。

类型:

整数

noise_variance_

根据Tipping和Bishop 1999年的概率PCA模型估计的噪声协方差。参见C. Bishop的《模式识别与机器学习》,12.2.1节,第574页,或http://www.miketipping.com/papers/met-mppca.pdf。需要计算估计的数据协方差和得分样本。

等于协方差矩阵 X 的最小特征值的平均值,数量为 (min(n_features, n_samples) - n_components)。

类型:

浮动

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

property explained_variance_

所选成分解释的方差量。

等于 X 的协方差矩阵的 n_components 个最大特征值。

用于 scikit-learn PCA 属性的装饰器。

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

property noise_variance_

根据Tipping和Bishop 1999年的概率PCA模型估计的噪声协方差。参见C. Bishop的《模式识别与机器学习》,12.2.1节,第574页,或http://www.miketipping.com/papers/met-mppca.pdf。需要计算估计的数据协方差和得分样本。

等于协方差矩阵 X 的最小特征值的平均值,数量为 (min(n_features, n_samples) - n_components)。

用于 scikit-learn PCA 属性的装饰器。

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.qmcd 模块

准蒙特卡罗离散度异常检测 (QMCD)

class pyod.models.qmcd.QMCD(contamination=0.1)[源代码]

基类:BaseDetector

环绕准蒙特卡罗差异是一种均匀性准则

用于评估超立方体中多个样本的空间填充情况。它量化了超立方体上的连续均匀分布与不同样本点上的离散均匀分布之间的距离。因此,样本点的较低差异值表明它相对于其他样本提供了更好的参数空间覆盖。该方法是基于核的,差异分数越高,相对于其他样本,它成为异常值的可能性就越大。更多信息请参阅 [BFM01]

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

用作阈值的修正z分数。基于中位数绝对偏差的修正z分数大于此值的观测值将被分类为异常值。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 独立样本和依赖/目标样本,其中目标样本是numpy数组的最后一列,例如:X = np.append(x, y.reshape(-1,1), axis=1)。仅当基本估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

Fit 检测器

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.rgraph 模块

R-图

class pyod.models.rgraph.RGraph(transition_steps=10, n_nonzero=10, gamma=50.0, gamma_nz=True, algorithm='lasso_lars', tau=1.0, maxiter_lasso=1000, preprocessing=True, contamination=0.1, blocksize_test_data=10, support_init='L2', maxiter=40, support_size=100, active_support=True, fit_intercept_LR=False, verbose=True)[源代码]

基类:BaseDetector

通过 R-graph 进行异常检测。论文: https://openaccess.thecvf.com/content_cvpr_2017/papers/You_Provable_Self-Representation_Based_CVPR_2017_paper.pdf 详情见 [BYRV17]

参数:
  • transition_steps (int, optional (default=20)) – 在图中进行转换的步骤数,之后将确定异常分数。

  • gamma (float)

  • gamma_nz (boolean, default True) – gamma 和 gamma_nz 共同决定了参数 alpha。当 gamma_nz = False 时,alpha = gamma。当 gamma_nz = True 时,alpha = gamma * alpha0,其中 alpha0 是使得优化问题的解在 alpha = alpha0 时为零向量的最大数值(参见 [1] 中的命题 1)。因此,当 gamma_nz = True 时,gamma 应为一个大于 1.0 的值。通常一个好的选择范围是 [5, 500]。

  • tau (float, default 1.0) – 弹性网络惩罚项的参数。当 tau = 1.0 时,该方法简化为基于基追踪的稀疏子空间聚类 (SSC-BP) [2]。当 tau = 0.0 时,该方法简化为最小二乘回归 (LSR)。

  • algorithm (string, default lasso_lars) – 计算表示的算法。可以是 lasso_lars 或 lasso_cd。注意:lasso_larslasso_cd 仅支持 tau = 1。对于 tau << 1 的情况,使用线性回归。

fit_intercept_LR: bool, 可选 (默认=False)

对于 gamma > 10000,使用线性回归代替 lasso_larslasso_cd。此参数确定是否计算模型的截距。

maxiter_lassoint, 默认 1000

lasso_larslasso_cd 的最大迭代次数。

n_非零int, 默认 50

这是每个表示向量中非零条目的数量上限。如果非零条目数量超过 n_nonzero,则只保留绝对值最大的前 n_nonzero 个条目。

active_support: boolean, 默认 True

设置为 True 以使用 [1] 中的活动支持算法来解决优化问题。当 n_samples 很大时,这应该会显著减少运行时间。

active_support_params: 字符串到任意类型的字典, 可选

活动支持算法的参数(关键字参数)和值。它可以用于设置参数 support_initsupport_sizemaxiter,详见 active_support_elastic_net。示例:active_support_params={‘support_size’:50, ‘maxiter’:100} 当 active_support=False 时忽略。

预处理bool, 可选 (默认=True)

如果为真,对数据应用标准化处理。

详细int, 可选 (默认=1)

详细模式。

  • 0 = 静默

  • 1 = 进度条

  • 2 = 每个epoch一行。

对于 verbose >= 1,可能会打印模型摘要。

random_staterandom_state: int, RandomState 实例或 None, 可选

(default=None) 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

污染float in (0., 0.5), 可选 (默认=0.1)

数据集的污染程度,即数据集中异常值的比例。在拟合时,这用于定义决策函数的阈值。

blocksize_test_data: int, 可选 (默认=10)

测试集被分割成大小为 blocksize_test_data 的块,以至少部分地分离测试集和训练集

transition_matrix_

从上次拟合数据得到的转移矩阵,这可能包括训练和测试数据

类型:

形状为 (n_samples,) 的 numpy 数组

decision_scores_形状为 (n_samples,) 的 numpy 数组

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

阈值浮动

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

标签_int,只能是 0 或 1

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

active_support_elastic_net(X, y, alpha, tau=1.0, algorithm='lasso_lars', support_init='L2', support_size=100, maxiter=40, maxiter_lasso=1000)[源代码]
源代码: https://github.com/ChongYou/subspace-clustering/blob/master/cluster/selfrepresentation.py

一种基于主动支持的算法,用于解决弹性网络优化问题 min_{c} tau ||c||_1 + (1-tau)/2 ||c||_2^2 + alpha / 2 ||y - c X ||_2^2。

参数:
  • X (array-like, shape (n_samples, n_features))

  • y (array-like, shape (1, n_features))

  • alpha (float)

  • tau (float, default 1.0)

  • algorithm (string, default spams) – 用于计算解决子问题的算法。可以是 lasso_lars 或 lasso_cd 或 spams(需要安装 spams 包)。注意:lasso_larslasso_cd 仅支持 tau = 1。

  • support_init (string, default knn) – 这决定了活动支持的初始化方式。它可以是 knnL2

  • support_size (int, default 100) – 这决定了工作集的大小。较小的 support_size 会减少每次迭代的运行时间,但会增加迭代次数。

  • maxiter (int default 40) – 主动支持更新的终止条件。

返回:

c – 优化问题的最优解。

返回类型:

shape n_samples

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

elastic_net_subspace_clustering(X, gamma=50.0, gamma_nz=True, tau=1.0, algorithm='lasso_lars', fit_intercept_LR=False, active_support=True, active_support_params=None, n_nonzero=50, maxiter_lasso=1000)[源代码]

源代码: https://github.com/ChongYou/subspace-clustering/blob/master/cluster/selfrepresentation.py

弹性网络子空间聚类 (EnSC) [1]。通过求解以下优化问题计算自表示矩阵 C:min_{c_j} tau ||c_j||_1 + (1-tau)/2 ||c_j||_2^2 + alpha / 2 ||x_j - c_j X ||_2^2 s.t. c_jj = 0,其中 c_j 和 x_j 分别是 C 和 X 的第 j 行。

参数 algorithm 指定用于解决优化问题的算法。lasso_larslasso_cd 是 sklearn 中实现的算法,spams 指的是与 lasso_lars 相同的算法,但它在 http://spams-devel.gforge.inria.fr/ 提供的 spams 包中实现(需要安装)。原则上,这三种算法都会给出相同的结果。对于大规模数据(例如,数据点数 > 5000),可以结合 active_support=True 使用这些算法中的任何一种。它采用了一种高效的活动支持策略,通过将优化问题分解为一系列小规模优化问题来解决,如 [1] 中所述。如果 tau = 1.0,该方法简化为基于基追踪的稀疏子空间聚类(SSC-BP)[2]。如果 tau = 0.0,该方法简化为最小二乘回归(LSR)[3]。注意:lasso_larslasso_cd 仅支持 tau = 1。:param X: 要聚类的输入数据 :type X: array-like, shape (n_samples, n_features) :param gamma: :type gamma: float :param gamma_nz: gamma 和 gamma_nz 共同决定了参数 alpha。当 gamma_nz = False 时,

alpha = gamma。当 gamma_nz = True 时,则 alpha = gamma * alpha0,其中 alpha0 是使得优化问题的解在 alpha = alpha0 时为零向量的最大数值(参见 [1] 中的命题 1)。因此,当 gamma_nz = True 时,gamma 应为一个大于 1.0 的值。一个好的选择通常在范围 [5, 500] 内。

参数:
  • tau (float, default 1.0) – 弹性网络惩罚项的参数。当 tau = 1.0 时,该方法简化为基于基追踪的稀疏子空间聚类 (SSC-BP) [2]。当 tau = 0.0 时,该方法简化为最小二乘回归 (LSR) [3]。

  • algorithm (string, default lasso_lars) – 计算表示的算法。可以是 lasso_lars 或 lasso_cd 或 spams(需要安装 spams 包)。注意:lasso_larslasso_cd 仅支持 tau = 1。

  • n_nonzero (int, default 50) – 这是每个表示向量中非零条目的数量上限。如果非零条目数量超过 n_nonzero,则只保留绝对值最大的前 n_nonzero 个条目。

  • active_support (boolean, default True) – 设置为 True 以使用 [1] 中的活动支持算法来解决优化问题。当 n_samples 很大时,这应该会显著减少运行时间。

  • active_support_params (dictionary of string to any, optional) – 活动支持算法的参数(关键字参数)和值。它可以用于设置参数 support_initsupport_sizemaxiter,详见 active_support_elastic_net。示例:active_support_params={‘support_size’:50, ‘maxiter’:100} 当 active_support=False 时忽略。

返回:

representation_matrix_ – 自表示矩阵。

返回类型:

csr matrix, shape: n_samples by n_samples

引用

[1] C. You, C.-G. Li, D. Robinson, R. Vidal, 基于Oracle的主动集算法用于可扩展的弹性网子空间聚类, CVPR 2016 [2] E. Elhaifar, R. Vidal, 稀疏子空间聚类: 算法, 理论与应用, TPAMI 2013 [3] C. Lu, 等. 通过最小二乘回归实现鲁棒且高效的子空间分割, ECCV 2012

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中忽略 y。:param X: 输入样本。:type X: 形状为 (n_samples, n_features) 的 numpy 数组 :param y: 未使用,为保持 API 一致性而存在。:type y: 忽略

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.rod 模块

基于旋转的异常检测器 (ROD)

class pyod.models.rod.ROD(contamination=0.1, parallel_execution=False)[源代码]

基类:BaseDetector

基于旋转的异常检测 (ROD) 是一种稳健且无参数的算法,不需要任何统计分布假设,并且在三维空间中直观地工作,其中表示数据点的三维向量使用 Rodrigues 旋转公式围绕几何中值逆时针旋转两次。旋转的结果是平行六面体,其体积作为成本函数进行数学分析,并用于计算中位数绝对偏差以获得异常得分。对于高维 > 3,通过取原始数据空间分解得到的整体三维子空间得分的平均值来计算整体得分。详情请参阅 [BABC20]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • parallel_execution (bool, optional (default=False).) – 如果设置为 True,算法将以并行方式运行,以获得更好的执行时间。建议仅在高维数据 > 10 且有适当硬件可用时,将此参数设置为 True。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.sampling 模块

基于采样的异常检测 (SP)

class pyod.models.sampling.Sampling(contamination=0.1, subset_size=20, metric='minkowski', metric_params=None, random_state=None)[源代码]

基类:BaseDetector

用于异常检测的采样类。

Sugiyama, M., Borgwardt, K. M.: 通过采样实现基于距离的快速异常检测,神经信息处理系统进展 (NIPS 2013), 467-475, 2013.

详情请参见 [BSB13]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • subset_size (float in (0., 1.0) or int (0, n_samples), optional (default=20)) – 数据集的子集大小。仅对数据集进行一次子集采样。

  • metric (string or callable, default 'minkowski') – 用于距离计算的度量。可以使用 scikit-learn 或 scipy.spatial.distance 中的任何度量。如果 metric 是一个可调用函数,它会在每对实例(行)上调用,并记录结果值。可调用函数应接受两个数组作为输入,并返回一个表示它们之间距离的值。这适用于 Scipy 的度量,但不如将度量名称作为字符串传递效率高。不支持距离矩阵。metric 的有效值包括: - 来自 scikit-learn:[‘cityblock’, ‘cosine’, ‘euclidean’, ‘l1’, ‘l2’, ‘manhattan’] - 来自 scipy.spatial.distance:[‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’] 有关这些度量的详细信息,请参阅 scipy.spatial.distance 的文档。

  • metric_params (dict, optional (default = None)) – 度量函数的附加关键字参数。

  • random_state (int, RandomState instance or None, optional (default None)) – 如果为整数,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,随机数生成器是 np.random 使用的 RandomState 实例。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 测试输入样本。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.sod 模块

子空间异常检测 (SOD)

class pyod.models.sod.SOD(contamination=0.1, n_neighbors=20, ref_set=10, alpha=0.8)[源代码]

基类:BaseDetector

子空间异常检测(SOD)模式旨在检测高维特征空间中不同子空间中的异常。对于每个数据对象,SOD 探索由数据对象邻居所跨越的轴平行子空间,并确定该对象在此子空间中与邻居的偏离程度。

详情请参见 [BKKrogerSZ09]

参数:
  • n_neighbors (int, optional (default=20)) – 用于 k 近邻查询的默认邻居数量。

  • ref_set (int, optional (default=10)) – 指定用于创建参考集的共享最近邻的数量。请注意,ref_set 必须小于 n_neighbors。

  • alpha (float in (0., 1.), optional (default=0.8)) – 指定选择子空间的最低限制。根据原文建议,默认设置为0.8。

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。输入样本的异常分数根据不同的检测器算法计算。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.so_gaal 模块

单目标生成对抗主动学习。部分代码改编自 https://github.com/leibinghe/GAAL-based-outlier-detection

class pyod.models.so_gaal.SO_GAAL(stop_epochs=20, lr_d=0.01, lr_g=0.0001, momentum=0.9, contamination=0.1)[源代码]

基类:BaseDetector

单目标生成对抗主动学习。

SO-GAAL 直接生成信息丰富的潜在异常值,以帮助分类器描述一个能够有效分离异常值与正常数据的边界。此外,为了防止生成器陷入模式崩溃问题,SO-GAAL 的网络结构从单一生成器(SO-GAAL)扩展到具有不同目标的多个生成器(MO-GAAL),以生成整个数据集的合理参考分布。更多信息请参阅 [BLLZ+19]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • stop_epochs (int, optional (default=20)) – 训练的轮数。总的轮数等于 stop_epochs 的三倍。

  • lr_d (float, optional (default=0.01)) – 判别器的学习率。

  • lr_g (float, optional (default=0.0001)) – 生成器的学习率。

  • momentum (float, optional (default=0.9)) – SGD 的动量参数。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.sos 模块

随机异常选择 (SOS)。部分代码改编自 https://github.com/jeroenjanssens/scikit-sos

class pyod.models.sos.SOS(contamination=0.1, perplexity=4.5, metric='euclidean', eps=1e-05)[源代码]

基类:BaseDetector

随机异常选择。

SOS 使用亲和力的概念来量化从一个数据点到另一个数据点之间的关系。亲和力与两个数据点之间的相似性成正比。因此,一个数据点与不相似的数据点几乎没有亲和力。当所有其他数据点对该数据点的亲和力不足时,该数据点被选为异常值。更多信息请参阅 [BJHuszarPvdH12]

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • perplexity (float, optional (default=4.5)) – 有效邻居数的平滑度量。困惑度参数类似于 kNN 算法中的参数 k`(最近邻的数量)。困惑度的范围可以是 1 到 n-1 之间的任何实数,其中 `n 是样本的数量。

  • metric (str, default 'euclidean') – 用于距离计算的度量。可以使用 scipy.spatial.distance 中的任何度量。度量的有效值包括: - ‘euclidean’ - 来自 scipy.spatial.distance:[‘braycurtis’, ‘canberra’, ‘chebyshev’, ‘correlation’, ‘dice’, ‘hamming’, ‘jaccard’, ‘kulsinski’, ‘mahalanobis’, ‘matching’, ‘minkowski’, ‘rogerstanimoto’, ‘russellrao’, ‘seuclidean’, ‘sokalmichener’, ‘sokalsneath’, ‘sqeuclidean’, ‘yule’] 有关这些度量的详细信息,请参阅 scipy.spatial.distance 的文档:http://docs.scipy.org/doc/scipy/reference/spatial.distance.html

  • eps (float, optional (default = 1e-5)) – 浮点误差的容差阈值。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

示例

>>> from pyod.models.sos import SOS
>>> from pyod.utils.data import generate_data
>>> n_train = 50
>>> n_test = 50
>>> contamination = 0.1
>>> X_train, y_train, X_test, y_test = generate_data(
...     n_train=n_train, n_test=n_test,
...     contamination=contamination, random_state=42)
>>>
>>> clf = SOS()
>>> clf.fit(X_train)
SOS(contamination=0.1, eps=1e-05, metric='euclidean', perplexity=4.5)
decision_function(X)[源代码]

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.suod 模块

SUOD

class pyod.models.suod.SUOD(base_estimators=None, contamination=0.1, combination='average', n_jobs=None, rp_clf_list=None, rp_ng_clf_list=None, rp_flag_global=True, target_dim_frac=0.5, jl_method='basic', bps_flag=True, approx_clf_list=None, approx_ng_clf_list=None, approx_flag_global=True, approx_clf=None, verbose=False)[源代码]

基类:BaseDetector

SUOD (Scalable Unsupervised Outlier Detection) 是一个用于大规模无监督异常检测器训练和预测的加速框架。详情请参见 [BZHC+21]

参数:
  • base_estimators (list, length must be greater than 1) – 基本估计器的列表。某些方法必须存在,例如 fitpredict

  • combination (str, optional (default='average')) – 决定如何聚合多个模型的结果: - “平均” : 平均所有基础检测器的结果 - “最大化” : 输出所有基础检测器中的最大值

  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • n_jobs (optional (default=1)) – 同时运行 fitpredict 的作业数量。如果设置为 -1,则作业数量将设置为实际可以并行运行的作业数量。

  • rp_clf_list (list, optional (default=None)) – 使用随机投影的异常检测模型列表。检测器名称应与PyOD一致。

  • rp_ng_clf_list (list, optional (default=None)) – 不使用随机投影的异常检测模型列表。检测器名称应与PyOD一致。

  • rp_flag_global (bool, optional (default=True)) – 如果设置为 False,所有基础模型的随机投影将被关闭。

  • target_dim_frac (float in (0., 1), optional (default=0.5)) – 目标压缩比。

  • jl_method (string, optional (default = 'basic')) – JL 投影方法: - “basic”:变换矩阵的每个分量在 N(0,1) 中随机选取。 - “discrete”:变换矩阵的每个分量在 {-1,1} 中随机选取。 - “circulant”:变换矩阵的第一行在 N(0,1) 中随机选取,每一行由前一行通过一次左移得到。 - “toeplitz”:变换矩阵的第一行和第一列在 N(0,1) 中随机选取,每个对角线具有从这些初始向量中取出的常数值。

  • bps_flag (bool, optional (default=True)) – 如果设置为 False,平衡的并行调度将被关闭。

  • approx_clf_list (list, optional (default=None)) – 使用伪监督近似的外部检测模型列表。检测器名称应与PyOD一致。

  • approx_ng_clf_list (list, optional (default=None)) – 不使用伪监督近似的异常检测模型列表。检测器名称应与PyOD一致。

  • approx_flag_global (bool, optional (default=True)) – 如果设置为 False,伪监督近似将被关闭。

  • approx_clf (object, optional (default: sklearn RandomForestRegressor)) – 用于近似无监督模型的监督模型。

  • cost_forecast_loc_fit (str, optional) – 预训练成本预测模型的训练位置。

  • cost_forecast_loc_pred (str, optional) – 预训练成本预测预测的位置。

  • verbose (int, optional (default=0)) – 控制构建过程的详细程度。

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,异常值被赋予更大的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 训练输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y=None)[源代码]

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

self – 拟合的估计器。

返回类型:

object

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

pyod.models.thresholds 模块

pyod.models.thresholds.AUCP(**kwargs)[源代码]

AUCP 类用于曲线下的面积百分比阈值处理。

使用曲线下面积来评估非参数方法,以确定由 decision_scores 生成的分数的阈值,其中异常值设置为 kde 的 auc 小于总 kde auc 的 (mean + abs(mean-median)) 百分比的任何值之外。

pyod.models.thresholds.BOOT(**kwargs)[源代码]

BOOT 类用于引导阈值设定器。

使用基于引导的方法来找到一个非参数的方法来阈值化由 decision_scores 生成的分数,其中异常值被设置为超出置信区间均值的任何值。

参数:

random_state (int, optional (default=1234)) – 用于引导置信区间的随机种子。也可以设置为 None。

pyod.models.thresholds.CHAU(**kwargs)[源代码]

CHAU 类用于 Chauvenet 准则的阈值处理。

使用 Chauvenet 准则来评估一个非参数方法,以阈值化由 decision_scores 生成的分数,其中异常值被设置为低于 Chauvenet 准则的任何值。

参数:

method ({'mean', 'median', 'gmean'}, optional (default='mean')) – 使用标量计算与距离垂直的面积 - ‘mean’: 使用分数的平均值构建一个标量 - ‘median’: 使用分数的中位数构建一个标量 - ‘gmean’: 使用分数的几何平均值构建一个标量

pyod.models.thresholds.CLF(**kwargs)[源代码]

用于训练分类器阈值器的 CLF 类。

使用训练好的线性分类器来评估一种非参数方法,用于对由 decision_scores 生成的分数进行阈值处理,其中异常值被设置为任何超过 0 的值。

参数:

method ({'simple', 'complex'}, optional (default='complex')) – 线性模型类型 - ‘简单’: 仅使用分数 - ‘复杂’: 使用分数、分数的对数和分数的概率密度函数

pyod.models.thresholds.CLUST(**kwargs)[源代码]

用于聚类类型阈值器的 CLUST 类。

使用聚类方法来评估一个非参数方法,用于对由 decision_scores 生成的分数进行阈值处理,其中异常值被设置为任何未标记为主要集群一部分的值。

参数:
  • method ({'agg', 'birch', 'bang', 'bgm', 'bsas', 'dbscan', 'ema', 'kmeans', 'mbsas', 'mshift', 'optics', 'somsc', 'spec', 'xmeans'}, optional (default='spec')) – 聚类方法 - ‘agg’: 凝聚 - ‘birch’: 使用层次结构的平衡迭代减少和聚类 - ‘bang’: BANG - ‘bgm’: 贝叶斯高斯混合 - ‘bsas’: 基本顺序算法方案 - ‘dbscan’: 基于密度的带噪声应用空间聚类 - ‘ema’: 高斯混合模型的期望最大化聚类算法 - ‘kmeans’: K-means - ‘mbsas’: 改进的基本顺序算法方案 - ‘mshift’: 均值漂移 - ‘optics’: 排序点以识别聚类结构 - ‘somsc’: 自组织特征映射 - ‘spec’: 聚类到归一化拉普拉斯投影 - ‘xmeans’: X-means

  • random_state (int, optional (default=1234)) – 贝叶斯高斯混合聚类的随机种子(method=’bgm’)。也可以设置为None。

pyod.models.thresholds.CPD(**kwargs)[源代码]

CPD 类用于变化点检测的阈值设定。

使用变化点检测来找到一种非参数方法来设定由 decision_scores 生成的分数的阈值,其中异常值被设定为超出检测到的变化点的任何值。

参数:
  • method ({'Dynp', 'KernelCPD', 'Binseg', 'BottomUp'}, optional (default='Dynp')) – 变化点检测方法 - ‘Dynp’: 动态规划(每个分区的最优最小误差和) - ‘KernelCPD’: RBF 核函数(每个分区的最优最小误差和) - ‘Binseg’: 二分分割 - ‘BottomUp’: 自底向上分割

  • transform ({'cdf', 'kde'}, optional (default='cdf')) – 拟合前的数据转换方法 - ‘cdf’: 使用累积分布函数 - ‘kde’: 使用核密度估计

pyod.models.thresholds.DECOMP(**kwargs)[源代码]

DECOMP 类用于基于分解的阈值处理器。

使用分解来评估一个非参数方法,以对由 decision_scores 生成的分数进行阈值处理,其中异常值被设置为分解矩阵的最大值之外的任何值,该分解矩阵是通过分解 decision_scores 的累积分布函数得到的。

参数:
  • method ({'NMF', 'PCA', 'GRP', 'SRP'}, optional (default='PCA')) – 用于分解的方法 - ‘NMF’: 非负矩阵分解 - ‘PCA’: 主成分分析 - ‘GRP’: 高斯随机投影 - ‘SRP’: 稀疏随机投影

  • random_state (int, optional (default=1234)) – 分解算法的随机种子。也可以设置为 None。

pyod.models.thresholds.DSN(**kwargs)[源代码]

DSN 类用于从正常阈值器进行距离偏移。

使用从正常值的距离偏移来评估一个非参数方法,以设定由 decision_scores 生成的分数的阈值,其中异常值被设定为超出所选度量计算的距离的任何值。

参数:
  • metric ({'JS', 'WS', 'ENG', 'BHT', 'HLL', 'HI', 'LK', 'LP', 'MAH', 'TMT', 'RES', 'KS', 'INT', 'MMD'}, optional (default='MAH')) – 用于距离计算的度量 - ‘JS’: Jensen-Shannon距离 - ‘WS’: Wasserstein或Earth Movers距离 - ‘ENG’: 能量距离 - ‘BHT’: Bhattacharyya距离 - ‘HLL’: Hellinger距离 - ‘HI’: 直方图交集距离 - ‘LK’: 正态分布的Lukaszyk-Karmowski度量 - ‘LP’: Levy-Prokhorov度量 - ‘MAH’: Mahalanobis距离 - ‘TMT’: Tanimoto距离 - ‘RES’: 学生化残差距离 - ‘KS’: Kolmogorov-Smirnov距离 - ‘INT’: 加权样条插值距离 - ‘MMD’: 最大均值差异距离

  • random_state (int, optional (default=1234)) – 正态分布的随机种子。也可以设置为 None。

pyod.models.thresholds.EB(**kwargs)[源代码]

EB 类用于椭圆边界阈值器。

使用伪随机椭圆边界来评估一种非参数方法,以对由 decision_scores 生成的分数进行阈值处理,其中异常值被设置为超出伪随机椭圆边界之间的任何值,该边界设置在内联值和异常值之间。

pyod.models.thresholds.FGD(**kwargs)[源代码]

FGD 类用于固定梯度下降阈值器。

使用固定梯度下降来评估一个非参数方法来设定由 decision_scores 生成的分数的阈值,其中异常值被设定为 kde 相对于 decision_scores 的一阶导数超过第一和第二拐点平均值的任何值。

pyod.models.thresholds.FILTER(**kwargs)[源代码]

基于阈值的过滤器的 FILTER 类。

使用基于过滤的方法来评估一个非参数的均值,以阈值化由 decision_scores 生成的分数,其中异常值被设置为超过最大过滤值的任何值。详情请参见 []

参数:

method ({'gaussian', 'savgol', 'hilbert', 'wiener', 'medfilt', 'decimate','detrend', 'resample'}, optional (default='savgol')) – 过滤分数的方法 - ‘gaussian’: 使用基于高斯滤波器 - ‘savgol’: 使用基于savgol滤波器 - ‘hilbert’: 使用基于希尔伯特滤波器 - ‘wiener’: 使用基于维纳滤波器 - ‘medfilt’: 使用基于中值滤波器 - ‘decimate’: 使用基于抽取滤波器 - ‘detrend’: 使用基于去趋势滤波器 - ‘resample’: 使用基于重采样滤波器

sigmaint, 可选 (默认=’auto’)

每个过滤器类型特定的变量,默认设置 sigma 为 len(scores)*np.std(scores)

  • ‘gaussian’: 高斯核的标准差

  • ‘savgol’: savgol 滤波器窗口大小

  • ‘hilbert’: 傅里叶分量的数量

  • ‘medfilt: 核大小

  • ‘decimate’: 下采样因子

  • ‘detrend’: 断点数量

  • ‘resample’: 重采样窗口大小

pyod.models.thresholds.FWFM(**kwargs)[源代码]

FWFM 类用于全宽在全最小阈值器。

使用全宽在全最小值(即基本宽度)来评估一个非参数的方法来设定由 decision_scores 生成的分数的阈值,其中异常值被设定为超出基本宽度的任何值。

pyod.models.thresholds.GESD(**kwargs)[源代码]

GESD 类用于广义极值学生化偏差阈值处理。

使用广义极值学生化偏差来评估非参数方法,以设定由 decision_scores 生成的分数的阈值,其中异常值被设定为小于检测到的最小异常值的任何值。

参数:
  • max_outliers (int, optional (default='auto')) – 数据集可能包含的最大异常值数量。默认将 max_outliers 设置为数据集大小的一半。

  • alpha (float, optional (default=0.05)) – 显著性水平

pyod.models.thresholds.HIST(**kwargs)[源代码]

HIST 类用于基于直方图的阈值处理。

使用 scikit-image.filters 中描述的直方图方法来评估一种非参数方法,以对由 decision_scores 生成的分数进行阈值处理,其中异常值由根据所选方法生成的直方图阈值设置。

参数:
  • nbins (int, optional (default='auto')) – 直方图中使用的箱数,默认设置为 int(len(scores)**0.7)

  • method ({'otsu', 'yen', 'isodata', 'li', 'minimum', 'triangle'}, optional (default='triangle')) – 基于直方图过滤的方法 - ‘otsu’: OTSU 的过滤方法 - ‘yen’: Yen 的过滤方法 - ‘isodata’: Ridler-Calvard 或 inter-means 过滤方法 - ‘li’: Li 的迭代最小交叉熵过滤方法 - ‘minimum’: 通过平滑方法在两个最大值之间的最小值过滤方法 - ‘triangle’: 三角算法过滤方法

pyod.models.thresholds.IQR(**kwargs)[源代码]

IQR 类用于四分位距阈值处理。

使用四分位距来评估一个非参数方法,以对由 decision_scores 生成的分数进行阈值处理,其中异常值被设置为超过第三四分位数加上 1.5 倍四分位距的任何值。

pyod.models.thresholds.KARCH(**kwargs)[源代码]

KARCH 类用于黎曼质心阈值处理。

使用 Karcher 均值(黎曼质心)来评估一个非参数方法,以对由 decision_scores 生成的分数进行阈值处理,其中异常值被设置为 Karcher 均值加上 decision_scores 的一个标准差之外的任何值。

参数:
  • ndim (int, optional (default=2)) – 构建欧几里得流形的维度数

  • method ({'simple', 'complex'}, optional (default='complex')) – 计算Karcher均值的方法 - ‘simple’: 使用得分的一维数组计算Karcher均值 - ‘complex’: 计算得分二维数组点积与排序得分数组之间的Karcher均值

pyod.models.thresholds.MAD(**kwargs)[源代码]

MAD 类用于中位数绝对偏差阈值处理。

使用中位数绝对偏差来评估一个非参数方法,以阈值化由 decision_scores 生成的分数,其中异常值被设置为任何超过均值加上中位数绝对偏差除以标准差的值。

pyod.models.thresholds.MCST(**kwargs)[源代码]

MCST 类用于蒙特卡罗 Shapiro 测试的阈值设定。

使用均匀随机抽样和统计测试来评估一种非参数方法,用于设定由 decision_scores 生成的分数的阈值,其中异常值被设定为迭代 Shapiro-Wilk 测试后剩余的最小值之外的任何值。注意** 随着数组大小的增加,准确性会降低。为了获得良好的结果,数组大小应小于1000。然而,这种方法在任何数组大小下都可能失败。

参数:

random_state (int, optional (default=1234)) – 均匀分布的随机种子。也可以设置为 None。

pyod.models.thresholds.META(**kwargs)[源代码]

META 类用于元建模阈值设定器。

使用训练好的元模型来评估一种非参数方法,以确定由 decision_scores 生成的分数的阈值,其中异常值是基于训练好的元模型分类器设置的。

参数:

method ({'LIN', 'GNB', 'GNBC', 'GNBM'}, optional (default='GNBM')) – select - ‘LIN’: 基于真实标签训练的RidgeCV线性分类器元模型 - ‘GNB’: 基于真实标签训练的高斯朴素贝叶斯分类器元模型 - ‘GNBC’: 基于最佳污染率训练的高斯朴素贝叶斯分类器元模型 - ‘GNBM’: 基于多元训练的高斯朴素贝叶斯分类器元模型

pyod.models.thresholds.MOLL(**kwargs)[源代码]

MOLL 类用于 Friedrichs 的平滑器阈值处理。

使用 Friedrichs’ 磨光器来评估一个非参数的方法来设定由 decision_scores 生成的分数的阈值,其中异常值被设定为通过卷积平滑后的数据集的最大值减一之外的任何值。

pyod.models.thresholds.MTT(**kwargs)[源代码]

MTT 类用于修正 Thompson Tau 测试的阈值设定。

使用修正的 Thompson Tau 检验来评估一个非参数方法,以设定由 decision_scores 生成的分数的阈值,其中异常值被设定为检验检测到的最小异常值之外的任何值。

参数:

strictness ([1,2,3,4,5], optional (default=4)) – 严格程度对应于 t-Student 分布图的样本

pyod.models.thresholds.OCSVM(**kwargs)[源代码]

OCSVM 类用于一类支持向量机阈值设定器。

使用单类支持向量机(one-class svm)来评估一种非参数方法,用于对由decision_scores生成的分数进行阈值处理,其中异常值由单类支持向量机使用多项式核函数确定,多项式的次数可以设置或由内部回归确定。

参数:
  • model ({'poly', 'sgd'}, optional (default='sgd')) – OCSVM 模型应用 - ‘poly’: 使用带有常规 OCSVM 的多项式核 - ‘sgd’: 使用带有 SGDOneClassSVM 的加性 Chi2 核近似

  • degree (int, optional (default='auto')) – 用于一类支持向量机的多项式次数。默认值为 ‘auto’,它会通过线性回归找到最佳次数。

  • gamma (float, optional (default='auto')) – 用于一类支持向量机多项式拟合的核系数。默认 ‘auto’ 使用 1 / n_features

  • criterion ({'aic', 'bic'}, optional (default='bic')) – 回归性能指标。AIC 是赤池信息量准则,BIC 是贝叶斯信息准则。这只在 degree 设置为 ‘auto’ 时适用

  • nu (float, optional (default='auto')) – 训练误差分数的上限和支持向量分数的下限。默认值 ‘auto’ 将 nu 设置为小于或等于中位数的任意点与整个数据集中点数的平均值和几何平均值的绝对差值之比。

  • tol (float, optional (default=1e-3)) – one-class svm 的停止准则

  • random_state (int, optional (default=1234)) – SVM 数据采样的随机种子。也可以设置为 None。

pyod.models.thresholds.QMCD(**kwargs)[源代码]

QMCD 类用于准蒙特卡罗离散度阈值处理。

使用拟蒙特卡罗离差来评估非参数方法,以确定由 decision_scores 生成的分数的阈值,其中异常值设置为超出百分位数或分位数的任何值,该分位数为1减去离差(注意** 离差量化了超立方体上连续均匀分布与不同样本点上离散均匀分布之间的距离)。

参数:
  • method ({'CD', 'WD', 'MD', 'L2-star'}, optional (default='WD')) – 差异类型 - ‘CD’: 中心差异 - ‘WD’: 环绕差异 - ‘MD’: 混合CD/WD - ‘L2-star’: L2-star差异

  • lim ({'Q', 'P'}, optional (default='P')) – 使用1 - 差异进行阈值评分的过滤方法 - ‘Q’: 使用分位数限制 - ‘P’: 使用百分位数限制

pyod.models.thresholds.REGR(**kwargs)[源代码]

基于回归的阈值器的 REGR 类。

使用回归来评估一种非参数方法,以阈值化由 decision_scores 生成的分数,其中异常值被设置为超出线性拟合的 y 轴截距值的任何值。

参数:
  • method ({'siegel', 'theil'}, optional (default='siegel')) – 基于回归的方法来计算y轴截距 - ‘siegel’: 实现了一种使用重复中位数的稳健线性回归方法 - ‘theil’: 实现了一种使用配对值的稳健线性回归方法

  • random_state (int, optional (default=1234)) – 正态分布的随机种子。也可以设置为 None。

pyod.models.thresholds.VAE(**kwargs)[源代码]

VAE 类用于变分自编码器的阈值设定。

使用 VAE 评估非参数方法来设定由 decision_scores 生成的分数的阈值,其中异常值被设定为编码后重建分布概率的最大值减去最小值之外的任何值。

参数:
  • verbose (bool, optional (default=False)) – 显示训练进度

  • device (str, optional (default='cpu')) – pytorch 的设备

  • latent_dims (int, optional (default='auto')) – 编码器将映射分数到的潜在维度的数量。默认值 ‘auto’ 使用轮廓似然法进行自动维度选择。

  • random_state (int, optional (default=1234)) – 正态分布的随机种子。也可以设置为 None。

  • epochs (int, optional (default=100)) – 训练VAE的epoch数

  • batch_size (int, optional (default=64)) – 训练期间数据加载器的批量大小

  • loss (str, optional (default='kl')) – 训练期间的损失函数 - ‘kl’ : 使用结合的负对数似然和Kullback-Leibler散度 - ‘mmd’: 使用结合的负对数似然和最大均值差异

pyod.models.thresholds.thresh_
类型:

分离内点和外点的阈值

pyod.models.thresholds.WIND(**kwargs)[源代码]

用于拓扑缠绕数阈值的 WIND 类。

使用拓扑绕数(相对于原点)来评估一种非参数的方法来阈值由 decision_scores 生成的分数,其中异常值被设置为任何超过从绕数计算的平均交点的值。

参数:

random_state (int, optional (default=1234)) – 正态分布的随机种子。也可以设置为 None。

pyod.models.thresholds.YJ(**kwargs)[源代码]

YJ 类用于 Yeo-Johnson 变换阈值器。

使用 Yeo-Johnson 变换来评估一种非参数方法,以确定由 decision_scores 生成的分数的阈值,其中异常值被设置为 YJ 变换数据中的最大值之外的任何值。

pyod.models.thresholds.ZSCORE(**kwargs)[源代码]

ZSCORE 类用于 ZSCORE 阈值处理。

使用 zscore 来评估一个非参数方法,以阈值化由 decision_scores 生成的分数,其中异常值被设置为任何超过 zscore 为 1 的值。

pyod.models.vae 模块

变分自编码器 (VAE) 和 beta-VAE 用于无监督异常检测

参考:

[BKW13] Kingma, Diederik, Welling ‘Auto-Encodeing Variational Bayes’ https://arxiv.org/abs/1312.6114

[BBHP+18] Burges 等人 ‘理解 beta-VAE 中的解耦’ https://arxiv.org/pdf/1804.03599.pdf

class pyod.models.vae.VAE(contamination=0.1, preprocessing=True, lr=0.001, epoch_num=30, batch_size=32, optimizer_name='adam', device=None, random_state=42, use_compile=False, compile_mode='default', verbose=1, optimizer_params: dict = {'weight_decay': 1e-05}, beta=1.0, capacity=0.0, encoder_neuron_list=[128, 64, 32], decoder_neuron_list=[32, 64, 128], latent_dim=2, hidden_activation_name='relu', output_activation_name='sigmoid', batch_norm=False, dropout_rate=0.2)[源代码]

基类:BaseDeepLearningDetector

变分自编码器 编码器将 X 映射到潜在空间 Z 解码器从 N(0,1) 中采样 Z VAE_loss = 重构损失 + KL 散度损失

参考文献见 [BKW13] Kingma, Diederik, Welling ‘Auto-Encodeing Variational Bayes’ https://arxiv.org/abs/1312.6114 了解更多详情。

在 beta VAE 的损失中,重点在于 KL_loss 和瓶颈的容量:VAE_loss = Reconstruction_loss + beta * KL_loss

参考文献请参见 [BBHP+18] Burges 等人 ‘Understanding disentangling in beta-VAE’ https://arxiv.org/pdf/1804.03599.pdf 以获取详细信息。

参数:
  • contamination (float in (0., 0.5), optional (default=0.1)) – 数据集的污染程度,即数据集中异常值的比例。在拟合时用于定义决策函数的阈值。

  • preprocessing (bool, optional (default=True)) – 如果为 True,则在训练模型之前应用预处理程序。

  • lr (float, optional (default=1e-3)) – 优化器的初始学习率。

  • epoch_num (int, optional (default=30)) – 训练的轮数。

  • batch_size (int, optional (default=32)) – 训练的批量大小。

  • optimizer_name (str, optional (default='adam')) – 用于训练模型的优化器的名称。

  • device (str, optional (default=None)) – 用于模型的设备。如果为 None,将自动决定。如果你想使用 MPS,请将其设置为 ‘mps’。

  • random_state (int, optional (default=42)) – 用于重现性的随机种子。

  • use_compile (bool, optional (default=False)) – 是否编译模型。如果为 True,模型将在训练前编译。这仅适用于 PyTorch 版本 >= 2.0.0 且 Python < 3.12。

  • compile_mode (str, optional (default='default')) – 编译模型的模式。可以是“default”、“reduce-overhead”、“max-autotune”或“max-autotune-no-cudagraphs”。详情请参见 https://pytorch.org/docs/stable/generated/torch.compile.html#torch-compile

  • verbose (int, optional (default=1)) – 详细模式。- 0 = 静默 - 1 = 进度条 - 2 = 每轮一行。

  • optimizer_params (dict, optional (default={'weight_decay': 1e-5})) – 优化器的额外参数。例如,optimizer_params={‘weight_decay’: 1e-5}

  • beta (float, optional (default=1.0)) – beta VAE 的系数。KL 散度的权重。默认是常规 VAE。

  • capacity (float, optional (default=0.0)) – 损失瓶颈的最大容量。

  • encoder_neuron_list (list, optional (default=[128, 64, 32])) – 编码器中每个隐藏层的神经元数量。因此,编码器的结构为 [feature_size, 128, 64, 32, latent_dim]。

  • decoder_neuron_list (list, optional (default=[32, 64, 128])) – 解码器中每个隐藏层的神经元数量。因此,解码器的结构为 [latent_dim, 32, 64, 128, feature_size]。

  • latent_dim (int, optional (default=2)) – 潜在空间的维度。

  • hidden_activation_name (str, optional (default='relu')) – 隐藏层中使用的激活函数。

  • output_activation_name (str, optional (default='sigmoid')) – 用于输出层的激活函数。

  • batch_norm (boolean, optional (default=False)) – 是否应用批量归一化,参见 https://pytorch.org/docs/stable/generated/torch.nn.BatchNorm1d.html

  • dropout_rate (float in (0., 1), optional (default=0.2)) – 在所有层中使用的dropout。

model

底层VAE模型。

类型:

torch.nn.Module

optimizer

用于训练模型的优化器。

类型:

torch.optim

criterion

用于训练模型的损失函数。

类型:

python 函数

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

threshold_

阈值基于 contamination 。它是 decision_scores_n_samples * contamination 最异常的样本。该阈值用于生成二进制离群标签。

类型:

浮动

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

build_model()[源代码]

需要在此方法中定义模型。self.feature_size 是输入数据中的特征数量。

decision_function(X, batch_size=None)

使用拟合的检测器预测 X 的原始异常分数。

输入样本的异常分数是基于不同的检测器算法计算的。为了保持一致性,离群点被赋予更大的异常分数。:param X: 训练输入样本。仅接受稀疏矩阵。

如果它们被基础估计器支持。

参数:

batch_size (int, optional (default=None)) – 处理输入样本的批处理大小。如果未指定,则使用默认批处理大小。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

decision_function_update(anomaly_scores)

在每次决策函数调用后的任何附加操作。

epoch_update()

在每个epoch之后的任何额外操作。

evaluate(data_loader)

评估深度学习模型。

参数:

data_loader (torch.utils.data.DataLoader) – 用于评估模型的数据加载器。

返回:

outlier_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

evaluating_forward(batch_data)[源代码]

用于评估模型的前向传递。需要实现的抽象方法。

参数:

batch_data (tuple) – 用于评估模型的批量数据。

返回:

输出 – 模型的输出。

返回类型:

numpy array

evaluating_prepare()
fit(X, y=None)

拟合检测器。在无监督方法中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (numpy array of shape (n_samples,), optional (default=None)) – 输入样本的地面实况。在无监督方法中不使用。

fit_predict(X, y=None)

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

  • 分数 (浮点数)

  • .. deprecated:: 0.6.9fit_predict_score 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。评分可以通过调用评估方法来完成,例如 AUC ROC。

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

classmethod load(path)

从指定路径加载模型。

参数:

path (str) – 加载模型的路径。

返回:

model – 已加载的模型。

返回类型:

BaseDeepLearningDetector

predict(X, return_confidence=False)

预测某个样本是否为异常值。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • confidence (numpy 数组,形状为 (n_samples,).) – 仅当 return_confidence 设置为 True 时。

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X, method='linear', return_confidence=False)

预测样本为异常值的概率。有两种可能的方法:

  1. 只需使用最小-最大转换,将异常分数线性转换到 [0,1] 的范围。模型必须先进行拟合。

  2. 使用统一评分,参见 [BKKSZ11]

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • method (str, optional (default='linear')) – 概率转换方法。它必须是 ‘linear’ 或 ‘unify’ 之一。

  • return_confidence (boolean, optional(default=False)) – 如果为真,也返回预测的置信度。

返回:

outlier_probability – 对于每个观测值,根据拟合的模型判断是否应将其视为异常值。返回异常值的概率,范围在 [0,1] 之间。注意,这取决于类别数量,默认情况下为 2 个类别([正常概率, 异常值概率])。

返回类型:

numpy array of shape (n_samples, n_classes)

save(path)

将模型保存到指定路径。

参数:

path (str) – 保存模型的路径。

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

train(train_loader)

训练深度学习模型。

参数:

train_loader (torch.utils.data.DataLoader) – 用于训练模型的数据加载器。

training_forward(batch_data)[源代码]

训练模型的前向传播。需要实现的抽象方法。

参数:

batch_data (tuple) – 用于训练模型的批量数据。

返回:

loss – 模型的损失值,如果有多个损失,则为损失值的元组。

返回类型:

float or tuple of float

training_prepare()

pyod.models.xgbod 模块

XGBOD: 通过无监督表示学习改进有监督的异常检测。一个半监督的异常检测框架。

class pyod.models.xgbod.XGBOD(estimator_list=None, standardization_flag_list=None, max_depth=3, learning_rate=0.1, n_estimators=100, silent=True, objective='binary:logistic', booster='gbtree', n_jobs=1, nthread=None, gamma=0, min_child_weight=1, max_delta_step=0, subsample=1, colsample_bytree=1, colsample_bylevel=1, reg_alpha=0, reg_lambda=1, scale_pos_weight=1, base_score=0.5, random_state=0, **kwargs)[源代码]

基类:BaseDetector

XGBOD 类用于异常检测。它首先使用传入的无监督异常检测器来提取数据更丰富的表示,然后将新生成的特征与原始特征连接起来,以构建增强的特征空间。然后在这个增强的特征空间上应用 XGBoost 分类器。更多信息请参阅 [BZH18]

参数:
  • estimator_list (list, optional (default=None)) – 传递给无监督学习的 pyod 检测器列表

  • standardization_flag_list (list, optional (default=None)) – 用于指示是否对每个检测器执行标准化的布尔标志列表。

  • max_depth (int) – 基学习器的最大树深度。

  • learning_rate (float) – 提升学习率(xgb 的“eta”)

  • n_estimators (int) – 要拟合的提升树数量。

  • silent (bool) – 是否在运行提升时打印消息。

  • objective (string or callable) – 指定学习任务以及相应的学习目标或自定义目标函数(参见下面的注释)。

  • booster (string) – 指定使用哪个增强器:gbtree、gblinear 或 dart。

  • n_jobs (int) – 用于运行 xgboost 的并行线程数。(替换 nthread

  • gamma (float) – 在树的叶节点上进行进一步分区所需的最小损失减少量。

  • min_child_weight (int) – 子节点中所需的实例权重(Hessian)的最小和。

  • max_delta_step (int) – 我们允许每棵树的权重估计的最大增量步长。

  • subsample (float) – 训练实例的子样本比例。

  • colsample_bytree (float) – 构建每棵树时列的子样本比例。

  • colsample_bylevel (float) – 每个级别中每个分割的列子样本比率。

  • reg_alpha (float (xgb's alpha)) – 权重上的L1正则化项。

  • reg_lambda (float (xgb's lambda)) – 权重上的L2正则化项。

  • scale_pos_weight (float) – 正负权重的平衡。

  • base_score – 所有实例的初始预测分数,全局偏置。

  • random_state (int) – 随机数种子。(替代 seed)

  • missing (#)

  • If (# Value in the data which needs to be present as a missing value.)

  • None (#)

  • np.nan. (defaults to)

  • importance_type (string, default "gain") – feature_importances_ 属性的特征重要性类型:可以是“gain”、“weight”、“cover”、“total_gain”或“total_cover”。

  • **kwargs (dict, optional) – XGBoost Booster对象的关键字参数。参数的完整文档可以在这里找到:https://github.com/dmlc/xgboost/blob/master/doc/parameter.rst。尝试通过构造函数参数和**kwargs字典同时设置参数将导致TypeError。注意:**kwargs在scikit-learn中不受支持。我们不保证通过此参数传递的参数能与scikit-learn正确交互。

n_detector_

使用的无监督检测器数量。

类型:

整数

clf_

XGBoost 分类器。

类型:

对象

decision_scores_

训练数据中的异常分数。分数越高,越异常。异常值往往有更高的分数。一旦检测器拟合完成,这个值就可用了。

类型:

形状为 (n_samples,) 的 numpy 数组

labels_

训练数据的二进制标签。0 代表内点,1 代表离群点/异常。它是通过对 decision_scores_ 应用 threshold_ 生成的。

类型:

int,只能是 0 或 1

decision_function(X)[源代码]

使用拟合的检测器预测X的原始异常分数。

输入样本的异常分数是基于拟合的检测器计算的。为了保持一致性,离群值被赋予更高的异常分数。

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。仅当基础估计器支持时,才接受稀疏矩阵。

返回:

anomaly_scores – 输入样本的异常分数。

返回类型:

numpy array of shape (n_samples,)

fit(X, y)[源代码]

使用 X 和 y 作为训练数据拟合模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 训练数据。

  • y (numpy array of shape (n_samples,)) – 地面真值(二进制标签) - 0 : 内点 - 1 : 离群点

返回:

self

返回类型:

object

fit_predict(X, y)[源代码]

首先拟合检测器,然后预测特定样本是否为异常值。在无监督模型中,y 被忽略。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

返回:

  • outlier_labels (numpy 数组,形状为 (n_samples,)) – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

  • .. deprecated:: 0.6.9fit_predict 将在 pyod 0.8.0 中被移除;它将被替换为先调用 fit 函数,然后访问 labels_ 属性以保持一致性。

fit_predict_score(X, y, scoring='roc_auc_score')[源代码]

拟合检测器,对样本进行预测,并根据预定义的指标(例如ROC)评估模型。

参数:
  • X (numpy array of shape (n_samples, n_features)) – 输入样本。

  • y (Ignored) – 未使用,按惯例存在以保持API一致性。

  • scoring (str, optional (default='roc_auc_score')) – 评估指标: - ‘roc_auc_score’: ROC 分数 - ‘prc_n_score’: 排名 n 处的精确度分数

返回:

分数

返回类型:

float

get_params(deep=True)

获取此估计器的参数。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数:

deep (bool, optional (default=True)) – 如果为 True,将返回此估计器及其包含的作为估计器的子对象的参数。

返回:

params – 参数名称映射到它们的值。

返回类型:

mapping of string to any

predict(X)[源代码]

预测某个样本是否为异常值。调用 xgboost 的 predict 函数。

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

outlier_labels – 对于每个观测值,根据拟合的模型判断其是否应被视为异常值。0 表示正常值,1 表示异常值。

返回类型:

numpy array of shape (n_samples,)

predict_confidence(X)

预测模型在稍微不同的训练集下做出相同预测的置信度。参见 [BPVD20]

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

confidence – 对于每个观察,如果训练集受到扰动,模型会以多一致的方式做出相同的预测。返回一个概率,范围在 [0,1]。

返回类型:

numpy array of shape (n_samples,)

predict_proba(X)[源代码]

预测样本为异常值的概率。调用 xgboost 的 predict_proba 函数。

参数:

X (numpy array of shape (n_samples, n_features)) – 输入样本。

返回:

outlier_labels – 对于每个观测值,根据拟合的模型判断是否应被视为异常值。返回异常值的概率,范围在 [0,1] 之间。

返回类型:

numpy array of shape (n_samples,)

set_params(**params)

设置此估计器的参数。该方法适用于简单估计器以及嵌套对象(如管道)。后者具有 <组件>__<参数> 形式的参数,因此可以更新嵌套对象的每个组件。

更多信息请参见 http://scikit-learn.org/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回:

self

返回类型:

object

模块内容

参考文献

[BAgg15] (1,2,3,4,5,6,7,8,9)

Charu C Aggarwal. Outlier analysis. In Data mining, 75–79. Springer, 2015.

[BAS15] (1,2,3,4,5,6)

Charu C Aggarwal and Saket Sathe. Theoretical foundations and algorithms for outlier ensembles. ACM SIGKDD Explorations Newsletter, 17(1):24–47, 2015.

[BABC20] (1,2,3)

Yahya Almardeny, Noureddine Boujnah, and Frances Cleary. A novel outlier detection method for multivariate data. IEEE Transactions on Knowledge and Data Engineering, 2020.

[BAP02] (1,2,3)

Fabrizio Angiulli and Clara Pizzuti. Fast outlier detection in high dimensional spaces. In European Conference on Principles of Data Mining and Knowledge Discovery, 15–27. Springer, 2002.

[BAAR96] (1,2,3)

Andreas Arning, Rakesh Agrawal, and Prabhakar Raghavan. A linear method for deviation detection in large databases. In KDD, volume 1141, 972–981. 1996.

[BBTA+18] (1,2,3)

Tharindu R Bandaragoda, Kai Ming Ting, David Albrecht, Fei Tony Liu, Ye Zhu, and Jonathan R Wells. Isolation-based anomaly detection using nearest-neighbor ensembles. Computational Intelligence, 34(4):968–998, 2018.

[BBirgeR06] (1,2,3,4,5,6)

Lucien Birgé and Yves Rozenholc. How many bins should be put in a regular histogram. ESAIM: Probability and Statistics, 10:24–45, 2006.

[BBKNS00] (1,2,3)

Markus M Breunig, Hans-Peter Kriegel, Raymond T Ng, and Jörg Sander. Lof: identifying density-based local outliers. In ACM sigmod record, volume 29, 93–104. ACM, 2000.

[BBHP+18] (1,2,3,4,5,6)

Christopher P Burgess, Irina Higgins, Arka Pal, Loic Matthey, Nick Watters, Guillaume Desjardins, and Alexander Lerchner. Understanding disentangling in betvae. arXiv preprint arXiv:1804.03599, 2018.

[BCoo77] (1,2,3)

R Dennis Cook. Detection of influential observation in linear regression. Technometrics, 19(1):15–18, 1977.

[BFM01] (1,2,3)

Kai-Tai Fang and Chang-Xing Ma. Wrap-around l2-discrepancy of random sampling, latin hypercube and uniform designs. Journal of complexity, 17(4):608–624, 2001.

[BGD12] (1,2,3)

Markus Goldstein and Andreas Dengel. Histogram-based outlier score (hbos): a fast unsupervised anomaly detection algorithm. KI-2012: Poster and Demo Track, pages 59–63, 2012.

[BGHNN22] (1,2,3)

Adam Goodge, Bryan Hooi, See-Kiong Ng, and Wee Siong Ng. Lunar: unifying local outlier detection methods via graph neural networks. In Proceedings of the AAAI Conference on Artificial Intelligence, volume 36, 6737–6745. 2022.

[BHR04] (1,2,3)

Johanna Hardin and David M Rocke. Outlier detection in the multiple cluster setting using the minimum covariance determinant estimator. Computational Statistics & Data Analysis, 44(4):625–638, 2004.

[BHXD03] (1,2,3)

Zengyou He, Xiaofei Xu, and Shengchun Deng. Discovering cluster-based local outliers. Pattern Recognition Letters, 24(9-10):1641–1650, 2003.

[BHof07] (1,2,3)

Heiko Hoffmann. Kernel pca for novelty detection. Pattern recognition, 40(3):863–874, 2007.

[BIH93] (1,2,3)

Boris Iglewicz and David Caster Hoaglin. How to detect and handle outliers. Volume 16. Asq Press, 1993.

[BJHuszarPvdH12] (1,2,3)

JHM Janssens, Ferenc Huszár, EO Postma, and HJ van den Herik. Stochastic outlier selection. Technical Report, Technical report TiCC TR 2012-001, Tilburg University, Tilburg Center for Cognition and Communication, Tilburg, The Netherlands, 2012.

[BKW13] (1,2,3,4)

Diederik P Kingma and Max Welling. Auto-encoding variational bayes. arXiv preprint arXiv:1312.6114, 2013.

[BKKSZ11] (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123)

Hans-Peter Kriegel, Peer Kroger, Erich Schubert, and Arthur Zimek. Interpreting and unifying outlier scores. In Proceedings of the 2011 SIAM International Conference on Data Mining, 13–24. SIAM, 2011.

[BKKrogerSZ09] (1,2,3)

Hans-Peter Kriegel, Peer Kröger, Erich Schubert, and Arthur Zimek. Outlier detection in axis-parallel subspaces of high dimensional data. In Pacific-Asia Conference on Knowledge Discovery and Data Mining, 831–838. Springer, 2009.

[BKZ+08] (1,2,3)

Hans-Peter Kriegel, Arthur Zimek, and others. Angle-based outlier detection in high-dimensional data. In Proceedings of the 14th ACM SIGKDD international conference on Knowledge discovery and data mining, 444–452. ACM, 2008.

[BLLP07] (1,2,3)

Longin Jan Latecki, Aleksandar Lazarevic, and Dragoljub Pokrajac. Outlier detection with kernel density functions. In International Workshop on Machine Learning and Data Mining in Pattern Recognition, 61–75. Springer, 2007.

[BLK05] (1,2,3)

Aleksandar Lazarevic and Vipin Kumar. Feature bagging for outlier detection. In Proceedings of the eleventh ACM SIGKDD international conference on Knowledge discovery in data mining, 157–166. ACM, 2005.

[BLZB+20] (1,2,3)

Zheng Li, Yue Zhao, Nicola Botta, Cezar Ionescu, and Xiyang Hu. COPOD: copula-based outlier detection. In IEEE International Conference on Data Mining (ICDM). IEEE, 2020.

[BLTZ08] (1,2,3)

Fei Tony Liu, Kai Ming Ting, and Zhi-Hua Zhou. Isolation forest. In Data Mining, 2008. ICDM'08. Eighth IEEE International Conference on, 413–422. IEEE, 2008.

[BLTZ12] (1,2,3)

Fei Tony Liu, Kai Ming Ting, and Zhi-Hua Zhou. Isolation-based anomaly detection. ACM Transactions on Knowledge Discovery from Data (TKDD), 6(1):3, 2012.

[BLLZ+19] (1,2,3,4,5,6)

Yezheng Liu, Zhe Li, Chong Zhou, Yuanchun Jiang, Jianshan Sun, Meng Wang, and Xiangnan He. Generative adversarial active learning for unsupervised outlier detection. IEEE Transactions on Knowledge and Data Engineering, 2019.

[BPKGF03] (1,2,3)

Spiros Papadimitriou, Hiroyuki Kitagawa, Phillip B Gibbons, and Christos Faloutsos. Loci: fast outlier detection using the local correlation integral. In Data Engineering, 2003. Proceedings. 19th International Conference on, 315–326. IEEE, 2003.

[BPVD20] (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126)

Lorenzo Perini, Vincent Vercruyssen, and Jesse Davis. Quantifying the confidence of anomaly detectors in their example-wise predictions. In Joint European Conference on Machine Learning and Knowledge Discovery in Databases, 227–243. Springer, 2020.

[BPevny16] (1,2,3)

Tomáš Pevn\`y. Loda: lightweight on-line detector of anomalies. Machine Learning, 102(2):275–304, 2016.

[BRRS00] (1,2,3)

Sridhar Ramaswamy, Rajeev Rastogi, and Kyuseok Shim. Efficient algorithms for mining outliers from large data sets. In ACM Sigmod Record, volume 29, 427–438. ACM, 2000.

[BRD99] (1,2,3)

Peter J Rousseeuw and Katrien Van Driessen. A fast algorithm for the minimum covariance determinant estimator. Technometrics, 41(3):212–223, 1999.

[BRVG+18] (1,2,3)

Lukas Ruff, Robert Vandermeulen, Nico Görnitz, Lucas Deecke, Shoaib Siddiqui, Alexander Binder, Emmanuel Müller, and Marius Kloft. Deep one-class classification. International conference on machine learning, 2018.

[BSSeebockW+17] (1,2,3)

Thomas Schlegl, Philipp Seeböck, Sebastian M Waldstein, Ursula Schmidt-Erfurth, and Georg Langs. Unsupervised anomaly detection with generative adversarial networks to guide marker discovery. In International conference on information processing in medical imaging, 146–157. Springer, 2017.

[BScholkopfPST+01] (1,2,3)

Bernhard Schölkopf, John C Platt, John Shawe-Taylor, Alex J Smola, and Robert C Williamson. Estimating the support of a high-dimensional distribution. Neural computation, 13(7):1443–1471, 2001.

[BSCSC03] (1,2,3)

Mei-Ling Shyu, Shu-Ching Chen, Kanoksri Sarinnapakorn, and LiWu Chang. A novel anomaly detection scheme based on principal component classifier. Technical Report, MIAMI UNIV CORAL GABLES FL DEPT OF ELECTRICAL AND COMPUTER ENGINEERING, 2003.

[BSB13] (1,2,3)

Mahito Sugiyama and Karsten Borgwardt. Rapid distance-based outlier detection via sampling. Advances in neural information processing systems, 2013.

[BTCFC02] (1,2,3)

Jian Tang, Zhixiang Chen, Ada Wai-Chee Fu, and David W Cheung. Enhancing effectiveness of outlier detections for low density patterns. In Pacific-Asia Conference on Knowledge Discovery and Data Mining, 535–548. Springer, 2002.

[BXPWW23] (1,2,3)

Hongzuo Xu, Guansong Pang, Yijie Wang, and Yongjun Wang. Deep isolation forest for anomaly detection. IEEE Transactions on Knowledge and Data Engineering, ():1–14, 2023. doi:10.1109/TKDE.2023.3270293.

[BYRV17] (1,2,3)

Chong You, Daniel P Robinson, and René Vidal. Provable self-representation based outlier detection in a union of subspaces. In Proceedings of the IEEE conference on computer vision and pattern recognition, 3395–3404. 2017.

[BZRF+18] (1,2,3)

Houssam Zenati, Manon Romain, Chuan-Sheng Foo, Bruno Lecouat, and Vijay Chandrasekhar. Adversarially learned anomaly detection. In 2018 IEEE International conference on data mining (ICDM), 727–736. IEEE, 2018.

[BZH18] (1,2,3)

Yue Zhao and Maciej K Hryniewicki. Xgbod: improving supervised outlier detection with unsupervised representation learning. In International Joint Conference on Neural Networks (IJCNN). IEEE, 2018.

[BZHC+21] (1,2,3)

Yue Zhao, Xiyang Hu, Cheng Cheng, Cong Wang, Changlin Wan, Wen Wang, Jianing Yang, Haoping Bai, Zheng Li, Cao Xiao, Yunlong Wang, Zhi Qiao, Jimeng Sun, and Leman Akoglu. Suod: accelerating large-scale unsupervised heterogeneous outlier detection. Proceedings of Machine Learning and Systems, 2021.

[BZNHL19] (1,2,3)

Yue Zhao, Zain Nasrullah, Maciej K Hryniewicki, and Zheng Li. LSCP: locally selective combination in parallel outlier ensembles. In Proceedings of the 2019 SIAM International Conference on Data Mining, SDM 2019, 585–593. Calgary, Canada, May 2019. SIAM. URL: https://doi.org/10.1137/1.9781611975673.66, doi:10.1137/1.9781611975673.66.