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()
: 评估模型在每个样本上的置信度(适用于预测和预测概率) [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)[源代码]¶
基类:
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 – 拟合的估计器。
- 返回类型:
- 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.9 – fit_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.9 – fit_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)[源代码]¶
预测样本为异常值的概率。有两种可能的方法:
只需使用最小-最大转换,将异常分数线性变换到 [0,1] 的范围。模型必须先进行拟合。
使用统一评分,参见 [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
- 返回类型: