API 速查表¶
完整的 API 参考可在 PyOD 文档 中找到。以下是所有检测器的快速速查表
pyod.models.base.BaseDetector.fit()
: 参数 y 在无监督方法中被忽略。pyod.models.base.BaseDetector.decision_function()
: 使用已拟合的检测器预测 X 的原始异常分数。pyod.models.base.BaseDetector.predict()
: 使用已拟合的检测器将样本确定为异常值或非异常值,返回二进制标签。pyod.models.base.BaseDetector.predict_proba()
: 使用已拟合的检测器估计样本是异常值的概率。pyod.models.base.BaseDetector.predict_confidence()
: 评估模型对每个样本的预测置信度(适用于 predict 和 predict_proba)[APVD20]。
已拟合模型的关键属性:
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]¶
预测样本是异常值的概率。有两种可能的方法
简单地使用最小-最大转换将异常分数线性转换为 [0,1] 范围。模型必须先拟合。
使用统一分数,参见 [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 类型