API 速查表

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

已拟合模型的关键属性:

  • pyod.models.base.BaseDetector.decision_scores_: 训练数据的异常分数。分数越高通常表明行为越异常。异常值通常具有更高的分数。异常值倾向于具有更高的分数。

  • pyod.models.base.BaseDetector.labels_: 训练数据的二进制标签,其中 0 表示正常点,1 表示异常值/异常。

参见下方的基类定义

pyod.models.base 模块

所有异常检测器模型的基类

class pyod.models.base.BaseDetector(contamination=0.1)[source]

Bases: object

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

参数

contaminationfloat 类型,范围 (0., 0.5),可选(默认值=0.1)

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

属性

decision_scores_shape 为 (n_samples,) 的 numpy 数组

训练数据的异常分数。分数越高,越异常。异常值倾向于具有更高的分数。一旦检测器拟合完毕,此值可用。

threshold_float 类型

该阈值基于 contamination。它是 decision_scores_ 中最异常的 n_samples * contamination 个样本的分数。计算此阈值用于生成二进制异常值标签。

labels_int 类型,0 或 1

训练数据的二进制标签。0 代表正常点,1 代表异常值/异常。它是通过将 threshold_ 应用于 decision_scores_ 生成的。

compute_rejection_stats(T=32, delta=0.1, c_fp=1, c_fn=1, c_r=-1, verbose=False)[source]
为无监督检测器添加拒绝选项。

这提供了保证:预期拒绝率的估计值 (return_rejectrate=True),拒绝率的上限 (return_ub_rejectrate= True),以及成本的上限 (return_ub_cost=True)。

参数

T: int 类型,可选(默认值=32)

它允许将拒绝阈值设置为 1-2exp(-T)。T 的值越高,拒绝的样本越多。

delta: float 类型,可选(默认值 = 0.1)

上限拒绝率以 1-delta 的概率成立。

c_fp, c_fn, c_r: float 类型(正数),

可选(默认值 = [1,1, contamination])分别表示误报 (c_fp)、漏报 (c_fn) 和拒绝 (c_r) 的成本。

verbose: bool 类型,可选(默认值 = False)

如果为 True,则打印预期的拒绝率、上限拒绝率和成本上限。

返回值

expected_rejection_rate: float 类型,预期的拒绝率;upperbound_rejection_rate: float 类型,拒绝率的上限

以 1-delta 的概率满足;

upperbound_cost: float 类型,成本的上限;

abstractmethod decision_function(X)[source]

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

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

参数

Xshape 为 (n_samples, n_features) 的 numpy 数组

输入样本。只有当基估计器支持稀疏矩阵时,才接受稀疏矩阵。

返回值

anomaly_scoresshape 为 (n_samples,) 的 numpy 数组

输入样本的异常分数。

abstractmethod fit(X, y=None)[source]

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

参数

Xshape 为 (n_samples, n_features) 的 numpy 数组

输入样本。

y被忽略

未使用,按照约定为了 API 一致性而存在。

返回值

selfobject 类型

已拟合的估计器。

fit_predict(X, y=None)[source]

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

参数

Xshape 为 (n_samples, n_features) 的 numpy 数组

输入样本。

y被忽略

未使用,按照约定为了 API 一致性而存在。

返回值

outlier_labelsshape 为 (n_samples,) 的 numpy 数组

对于每个观测值,指示其是否根据已拟合模型被视为异常值。0 代表正常点,1 代表异常值。

自 0.6.9 版本起已弃用: fit_predict 将在 pyod 0.8.0 版本中移除;为保持一致性,将由先调用 fit 函数再访问 labels_ 属性替代。

fit_predict_score(X, y, scoring='roc_auc_score')[source]

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

参数

Xshape 为 (n_samples, n_features) 的 numpy 数组

输入样本。

y被忽略

未使用,按照约定为了 API 一致性而存在。

scoringstr 类型,可选(默认值=’roc_auc_score’)

评估指标

  • ‘roc_auc_score’:ROC 分数

  • ‘prc_n_score’:Precision @ rank n 分数

返回值

score : float 类型

自 0.6.9 版本起已弃用: fit_predict_score 将在 pyod 0.8.0 版本中移除;为保持一致性,将由先调用 fit 函数再访问 labels_ 属性替代。评分可以通过调用评估方法(例如 AUC ROC)完成。

get_params(deep=True)[source]

获取此估计器的参数。

有关更多信息,请参阅 https://scikit-learn.cn/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

参数

deepbool 类型,可选(默认值=True)

如果为 True,将返回此估计器以及其中包含的作为估计器的子对象的参数。

返回值

params字符串到任意类型的映射

参数名称及其对应值的映射。

predict(X, return_confidence=False)[source]

预测特定样本是否为异常值。

参数

Xshape 为 (n_samples, n_features) 的 numpy 数组

输入样本。

return_confidenceboolean 类型,可选(默认值=False)

如果为 True,则同时返回预测的置信度。

返回值

outlier_labelsshape 为 (n_samples,) 的 numpy 数组

对于每个观测值,指示其是否根据已拟合模型被视为异常值。0 代表正常点,1 代表异常值。

confidenceshape 为 (n_samples,) 的 numpy 数组。

仅当 return_confidence 设置为 True 时返回。

predict_confidence(X)[source]

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

参数

Xshape 为 (n_samples, n_features) 的 numpy 数组

输入样本。

返回值

confidenceshape 为 (n_samples,) 的 numpy 数组

对于每个观测值,指示如果在训练集受到扰动的情况下,模型做出相同预测的一致性程度。返回一个概率值,范围在 [0,1] 内。

predict_proba(X, method=‘linear’, return_confidence=False)[source]

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

  1. 简单地使用最小-最大转换将异常分数线性转换为 [0,1] 范围。模型必须先拟合。

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

参数

Xshape 为 (n_samples, n_features) 的 numpy 数组

输入样本。

methodstr 类型,可选(默认值=’linear’)

概率转换方法。必须是 ‘linear’ 或 ‘unify’ 之一。

return_confidenceboolean 类型,可选(默认值=False)

如果为 True,则同时返回预测的置信度。

返回值

outlier_probabilityshape 为 (n_samples, n_classes) 的 numpy 数组

对于每个观测值,指示其是否根据已拟合模型被视为异常值。返回异常概率,范围在 [0,1] 内。注意它取决于类别的数量,默认是 2 个类别([正常概率, 异常概率])。

predict_with_rejection(X, T=32, return_stats=False, delta=0.1, c_fp=1, c_fn=1, c_r=-1)[source]
预测特定样本是否为异常值,

允许检测器拒绝(即输出 = -2)低置信度的预测。

参数

Xshape 为 (n_samples, n_features) 的 numpy 数组

输入样本。

Tint 类型,可选(默认值=32)

它允许将拒绝阈值设置为 1-2exp(-T)。T 的值越高,拒绝的样本越多。

return_stats: bool 类型,可选(默认值 = False)

如果为 true,则同时返回三个额外的 float 值:估计的拒绝率、上限拒绝率和成本上限。

delta: float 类型,可选(默认值 = 0.1)

上限拒绝率以 1-delta 的概率成立。

c_fp, c_fn, c_r: float 类型(正数),可选(默认值 = [1,1, contamination])

分别表示误报 (c_fp)、漏报 (c_fn) 和拒绝 (c_r) 的成本。

返回值

outlier_labelsshape 为 (n_samples,) 的 numpy 数组

对于每个观测值,指示其是否根据已拟合模型被视为异常值。0 代表正常点,1 代表异常值,-2 代表拒绝。

expected_rejection_rate: float 类型,如果 return_stats 为 True;upperbound_rejection_rate: float 类型,如果 return_stats 为 True;upperbound_cost: float 类型,如果 return_stats 为 True;

set_params(**params)[source]

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

有关更多信息,请参阅 https://scikit-learn.cn/stable/modules/generated/sklearn.base.BaseEstimator.html 和 sklearn/base.py。

返回值

self : object 类型