API 速查表

完整的API参考可在 PyOD 文档 中找到。以下是所有检测器的快速备忘单:

拟合模型的关键属性:

请参见下面的基类定义:

pyod.models.base 模块

所有异常检测模型的基类

class pyod.models.base.BaseDetector(contamination=0.1)[源代码]

基类:object

所有异常检测算法的抽象类。

参数:

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

abstract decision_function(X)[源代码]

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

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

参数:

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

返回:

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

返回类型:

numpy array of shape (n_samples,)

abstract 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