实用函数¶
pyod.utils.data 模块¶
用于数据处理的实用函数
- pyod.utils.data.check_consistent_shape(X_train, y_train, X_test, y_test, y_train_pred, y_test_pred)[source]¶
用于检查输入数据形状是否一致的内部形状检查函数。
参数¶
- X_trainnumpy 数组,形状为 (n_samples, n_features)
训练样本。
- y_train列表或数组,形状为 (n_samples,)
训练样本的真实标签。
- X_testnumpy 数组,形状为 (n_samples, n_features)
测试样本。
- y_test列表或数组,形状为 (n_samples,)
测试样本的真实标签。
- y_train_prednumpy 数组,形状为 (n_samples, n_features)
训练样本的预测二元标签。
- y_test_prednumpy 数组,形状为 (n_samples, n_features)
测试样本的预测二元标签。
返回值¶
- X_trainnumpy 数组,形状为 (n_samples, n_features)
训练样本。
- y_train列表或数组,形状为 (n_samples,)
训练样本的真实标签。
- X_testnumpy 数组,形状为 (n_samples, n_features)
测试样本。
- y_test列表或数组,形状为 (n_samples,)
测试样本的真实标签。
- y_train_prednumpy 数组,形状为 (n_samples, n_features)
训练样本的预测二元标签。
- y_test_prednumpy 数组,形状为 (n_samples, n_features)
测试样本的预测二元标签。
- pyod.utils.data.evaluate_print(clf_name, y, y_pred)[source]¶
用于评估和打印示例结果的实用函数。默认指标包括 ROC 和 Precision @ n
参数¶
- clf_name字符串
检测器的名称。
- y列表或 numpy 数组,形状为 (n_samples,)
真实标签。二元(0:正常点,1:离群点)。
- y_pred列表或 numpy 数组,形状为 (n_samples,)
已拟合模型返回的原始离群值分数。
- pyod.utils.data.generate_data(n_train=1000, n_test=500, n_features=2, contamination=0.1, train_only=False, offset=10, behaviour='new', random_state=None, n_nan=0, n_inf=0)[source]¶
用于生成合成数据的实用函数。正常数据由多元高斯分布生成,离群点由均匀分布生成。返回“X_train, X_test, y_train, y_test”。
参数¶
- n_train整型,(默认=1000)
要生成的训练点数量。
- n_test整型,(默认=500)
要生成的测试点数量。
- n_features整型,可选(默认=2)
特征(维度)的数量。
- contamination浮点型,取值范围 (0., 0.5),可选(默认=0.1)
数据集的污染程度,即数据集中离群点的比例。在拟合时用于定义决策函数的阈值。
- train_only布尔型,可选(默认=False)
如果为 True,则只生成训练数据。
- offset整型,可选(默认=10)
调整高斯分布和均匀分布的值范围。
- behaviour字符串,默认=’new’
返回数据集的行为,可以是“old”或“new”。传递
behaviour='new'
返回“X_train, X_test, y_train, y_test”,而传递behaviour='old'
返回“X_train, y_train, X_test, y_test”。- random_state整型、RandomState 实例或 None,可选(默认=None)
如果为整型,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,则随机数生成器是 np.random 使用的 RandomState 实例。
- n_nan整型
缺失值 (np.nan) 的数量。默认为零。
- n_inf整型
无穷大值 (np.inf) 的数量。默认为零。
返回值¶
- X_trainnumpy 数组,形状为 (n_train, n_features)
训练数据。
- X_testnumpy 数组,形状为 (n_test, n_features)
测试数据。
- y_trainnumpy 数组,形状为 (n_train,)
训练真实标签。
- y_testnumpy 数组,形状为 (n_test,)
测试真实标签。
- pyod.utils.data.generate_data_categorical(n_train=1000, n_test=500, n_features=2, n_informative=2, n_category_in=2, n_category_out=2, contamination=0.1, shuffle=True, random_state=None)[source]¶
用于生成合成分类数据的实用函数。
参数¶
- n_train整型,(默认=1000)
要生成的训练点数量。
- n_test整型,(默认=500)
要生成的测试点数量。
- n_features整型,可选(默认=2)
每个样本的特征数量。
- n_informative整型,取值范围 (1, n_features),可选(默认=2)
离群点中的信息特征数量。这个值越大,离群点检测就越容易。请注意,n_informative 不应小于或等于 n_features。
- n_category_in整型,取值范围 (1, n_inliers),可选(默认=2)
正常点中的类别数量。
- n_category_out整型,取值范围 (1, n_outliers),可选(默认=2)
离群点中的类别数量。
- contamination浮点型,取值范围 (0., 0.5),可选(默认=0.1)
数据集的污染程度,即数据集中离群点的比例。
- shuffle: 布尔型,可选(默认=True)
如果为 True,正常点将被打乱,从而产生更嘈杂的分布。
- random_state整型、RandomState 实例或 None,可选(默认=None)
如果为整型,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,则随机数生成器是 np.random 使用的 RandomState 实例。
返回值¶
- X_trainnumpy 数组,形状为 (n_train, n_features)
训练数据。
- y_trainnumpy 数组,形状为 (n_train,)
训练真实标签。
- X_testnumpy 数组,形状为 (n_test, n_features)
测试数据。
- y_testnumpy 数组,形状为 (n_test,)
测试真实标签。
- pyod.utils.data.generate_data_clusters(n_train=1000, n_test=500, n_clusters=2, n_features=2, contamination=0.1, size='same', density='same', dist=0.25, random_state=None, return_in_clusters=False)[source]¶
- 用于生成聚类合成数据的实用函数。
生成的数据可能涉及低密度模式问题和全局离群点,这些被认为是离群点检测算法的难题。
参数¶
- n_train整型,(默认=1000)
要生成的训练点数量。
- n_test整型,(默认=500)
要生成的测试点数量。
- n_clusters整型,可选(默认=2)
要生成的中心点(即聚类)数量。
- n_features整型,可选(默认=2)
每个样本的特征数量。
- contamination浮点型,取值范围 (0., 0.5),可选(默认=0.1)
数据集的污染程度,即数据集中离群点的比例。
- size字符串,可选(默认=’same’)
每个聚类的大小:“same” 生成大小相同的聚类,“different” 生成大小不同的聚类。
- density字符串,可选(默认=’same’)
每个聚类的密度:“same” 生成密度相同的聚类,“different” 生成密度不同的聚类。
- dist: 浮点型,可选(默认=0.25)
聚类之间的距离。应在 0. 和 1.0 之间。用于尽可能避免聚类重叠。但是,如果样本数量和聚类数量过高,即使
dist
设置为 1.0,也难以完全分离它们。- random_state整型、RandomState 实例或 None,可选(默认=None)
如果为整型,random_state 是随机数生成器使用的种子;如果为 RandomState 实例,random_state 是随机数生成器;如果为 None,则随机数生成器是 np.random 使用的 RandomState 实例。
- return_in_clusters布尔型,可选(默认=False)
如果为 True,函数将返回 x_train, y_train, x_test, y_test,每个都是一个 numpy 数组列表,其中每个索引代表一个聚类。如果为 False,它将把聚类数组序列连接后返回 x_train, y_train, x_test, y_test,每个都是一个 numpy 数组。
返回值¶
- X_trainnumpy 数组,形状为 (n_train, n_features)
训练数据。
- y_trainnumpy 数组,形状为 (n_train,)
训练真实标签。
- X_testnumpy 数组,形状为 (n_test, n_features)
测试数据。
- y_testnumpy 数组,形状为 (n_test,)
测试真实标签。
pyod.utils.example 模块¶
用于运行示例的实用函数
- pyod.utils.example.data_visualize(X_train, y_train, show_figure=True, save_figure=False)[source]¶
用于可视化 generate_data_cluster 函数生成的合成样本的实用函数。
参数¶
- X_trainnumpy 数组,形状为 (n_samples, n_features)
训练样本。
- y_train列表或数组,形状为 (n_samples,)
训练样本的真实标签。
- show_figure布尔型,可选(默认=True)
如果设置为 True,则显示图表。
- save_figure布尔型,可选(默认=False)
如果设置为 True,则将图表保存到本地。
- pyod.utils.example.visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred, y_test_pred, show_figure=True, save_figure=False)[source]¶
用于可视化示例结果的实用函数。仅内部使用。
参数¶
- clf_name字符串
检测器的名称。
- X_trainnumpy 数组,形状为 (n_samples, n_features)
训练样本。
- y_train列表或数组,形状为 (n_samples,)
训练样本的真实标签。
- X_testnumpy 数组,形状为 (n_samples, n_features)
测试样本。
- y_test列表或数组,形状为 (n_samples,)
测试样本的真实标签。
- y_train_prednumpy 数组,形状为 (n_samples, n_features)
训练样本的预测二元标签。
- y_test_prednumpy 数组,形状为 (n_samples, n_features)
测试样本的预测二元标签。
- show_figure布尔型,可选(默认=True)
如果设置为 True,则显示图表。
- save_figure布尔型,可选(默认=False)
如果设置为 True,则将图表保存到本地。
pyod.utils.stat_models 模块¶
统计模型集合
- pyod.utils.stat_models.column_ecdf(matrix: ndarray) ndarray [source]¶
用于计算二维特征矩阵的列式经验累积分布函数(ECDF),其中行代表样本,列代表每个样本的特征。累积沿样本轴的正方向进行。
例如:p(1) = 0.2, p(0) = 0.3, p(2) = 0.1, p(6) = 0.4 ECDF E(5) = p(x <= 5) ECDF E 将是 E(-1) = 0, E(0) = 0.3, E(1) = 0.5, E(2) = 0.6, E(3) = 0.6, E(4) = 0.6, E(5) = 0.6, E(6) = 1
类似于并对照以下内容进行了测试:https://statsmodels.cn/stable/generated/statsmodels.distributions.empirical_distribution.ECDF.html
返回值¶
- pyod.utils.stat_models.ecdf_terminate_equals_inplace(matrix: ndarray, probabilities: ndarray)[source]¶
这是一个用于计算数组 ECDF 的辅助函数。为了利用 numpy 的 njit 编译器提高速度,该函数从原始函数中分离出来,因为它不幸需要循环遍历矩阵的所有行和列。它在概率矩阵上进行原地操作。
参数¶
matrix : 一个特征矩阵,其中行是样本,每列是一个特征!(预期已排序!)
- probabilities一个用于构建 ECDF 的概率矩阵。其值介于 0 和 1 之间且
也已排序。
返回值¶
- pyod.utils.stat_models.pairwise_distances_no_broadcast(X, Y)[source]¶
用于计算两个矩阵行方向欧几里得距离的实用函数。与对偶计算不同,此函数不会广播。
例如,X 和 Y 都是 (4,3) 矩阵,函数将返回形状为 (4,) 的距离向量,而不是 (4,4)。
参数¶
- X数组,形状为 (n_samples, n_features)
第一个输入样本
- Y数组,形状为 (n_samples, n_features)
第二个输入样本
返回值¶
- distance数组,形状为 (n_samples,)
X 和 Y 的行方向欧几里得距离
- pyod.utils.stat_models.pearsonr_mat(mat, w=None)[source]¶
用于计算皮尔逊矩阵(行方向)的实用函数。
参数¶
- matnumpy 数组,形状为 (n_samples, n_features)
输入矩阵。
- wnumpy 数组,形状为 (n_features,)
权重。
返回值¶
- pear_matnumpy 数组,形状为 (n_samples, n_samples)
行方向皮尔逊分数矩阵。
- pyod.utils.stat_models.wpearsonr(x, y, w=None)[source]¶
用于计算两个样本加权皮尔逊相关的实用函数。
更多信息请参阅 https://stats.stackexchange.com/questions/221246/such-thing-as-a-weighted-correlation
参数¶
- x数组,形状为 (n,)
输入 x。
- y数组,形状为 (n,)
输入 y。
- w数组,形状为 (n,)
权重 w。
返回值¶
- scores浮点型,取值范围 [-1,1]
x 和 y 之间的加权皮尔逊相关性。
pyod.utils.utility 模块¶
一组支持离群点检测的实用函数。
- pyod.utils.utility.argmaxn(value_list, n, order='desc')[source]¶
如果 order 设置为 ‘desc’,则返回列表中前 n 个元素的索引,否则返回最小的 n 个元素的索引。
参数¶
- value_list列表、数组或 numpy 数组,形状为 (n_samples,)
包含所有值的列表。
- n整型
要选择的元素数量。
- order字符串,可选(默认=’desc’)
排序顺序 {‘desc’, ‘asc’}
‘desc’:降序
‘asc’:升序
返回值¶
- index_listnumpy 数组,形状为 (n,)
前 n 个元素的索引。
- pyod.utils.utility.check_detector(detector)[source]¶
检查给定检测器是否存在 fit 和 decision_function 方法
参数¶
- detectorpyod.models
执行检查的检测器实例。
- pyod.utils.utility.check_parameter(param, low=-2147483647, high=2147483647, param_name='', include_left=False, include_right=False)[source]¶
检查输入是否在定义范围内。
参数¶
- param整型,浮点型
要检查的输入参数。
- low整型,浮点型
范围的下限。
- high整型,浮点型
范围的上限。
- param_name字符串,可选(默认=’’)
参数的名称。
- include_left布尔型,可选(默认=False)
是否包含下限(下限 <=)。
- include_right布尔型,可选(默认=False)
是否包含上限(<= 上限)。
返回值¶
- within_range布尔型 或 引发错误
参数是否在 (low, high) 范围内
- pyod.utils.utility.generate_bagging_indices(random_state, bootstrap_features, n_features, min_features, max_features)[source]¶
随机抽取特征索引。仅内部使用。
修改自 sklearn/ensemble/bagging.py
参数¶
- random_stateRandomState
用于定义随机排列生成器状态的随机数生成器实例。
- bootstrap_features布尔型
指定是否使用 bootstrap 生成索引
- n_features整型
生成索引时指定总体大小
- min_features整型
随机抽样特征数量的下限
- max_features整型
随机抽样特征数量的上限
返回值¶
- feature_indicesnumpy 数组,形状为 (n_samples,)
用于 bagging 的特征索引
- pyod.utils.utility.generate_indices(random_state, bootstrap, n_population, n_samples)[source]¶
随机抽取样本索引。仅内部使用。
请参阅 sklearn/ensemble/bagging.py
参数¶
- random_stateRandomState
用于定义随机排列生成器状态的随机数生成器实例。
- bootstrap布尔型
指定是否使用 bootstrap 生成索引
- n_population整型
生成索引时指定总体大小
- n_samples整型
指定要抽取的样本数量
返回值¶
- indicesnumpy 数组,形状为 (n_samples,)
随机抽取的索引
- pyod.utils.utility.get_diff_elements(li1, li2)[source]¶
获取 li1 中存在但 li2 中不存在的元素,反之亦然
参数¶
- li1列表或 numpy 数组
输入列表 1。
- li2列表或 numpy 数组
输入列表 2。
返回值¶
- difference列表
li1 和 li2 之间的差集。
- pyod.utils.utility.get_intersection(lst1, lst2)[source]¶
获取两个列表之间的重叠部分
参数¶
- li1列表或 numpy 数组
输入列表 1。
- li2列表或 numpy 数组
输入列表 2。
返回值¶
- difference列表
li1 和 li2 之间的重叠部分。
- pyod.utils.utility.get_label_n(y, y_pred, n=None)[source]¶
通过将前 n 个离群点分数分配为 1,将原始离群点分数转换为二元标签的函数。
参数¶
- y列表或 numpy 数组,形状为 (n_samples,)
真实标签。二元(0:正常点,1:离群点)。
- y_pred列表或 numpy 数组,形状为 (n_samples,)
已拟合模型返回的原始离群值分数。
- n整型,可选(默认=None)
离群点数量。如果未定义,则使用真实标签推断。
返回值¶
- labelsnumpy 数组,形状为 (n_samples,)
二元标签 0:正常点,1:离群点
示例¶
>>> from pyod.utils.utility import get_label_n >>> y = [0, 1, 1, 0, 0] >>> y_pred = [0.1, 0.5, 0.3, 0.2, 0.7] >>> get_label_n(y, y_pred) array([0, 1, 0, 0, 1])
- pyod.utils.utility.get_list_diff(li1, li2)[source]¶
获取 li1 中存在但 li2 中不存在的元素。li1-li2
参数¶
- li1列表或 numpy 数组
输入列表 1。
- li2列表或 numpy 数组
输入列表 2。
返回值¶
- difference列表
li1 和 li2 之间的差集。
- pyod.utils.utility.get_optimal_n_bins(X, upper_bound=None, epsilon=1)[source]¶
使用 Birge Rozenblac 方法确定直方图的最佳 bin 数量(详情参见 [BBirgeR06])。
参见 https://doi.org/10.1051/ps:2006001
参数¶
- X数组类型,形状为 (n_samples, n_features)
用于确定最佳 bin 数量的样本。
- upper_bound整型,默认=None
要考虑的 n_bins 最大值。如果设置为 None,则使用 np.sqrt(X.shape[0]) 作为上限。
- epsilon浮点型,默认 = 1
添加到对数中的稳定项,以防止除以零。
返回值¶
- optimal_n_bins整型
根据 Birge Rozenblac 方法得到的最佳 n_bins 值
- pyod.utils.utility.invert_order(scores, method='multiplication')[source]¶
反转值列表的顺序。列表中最小的值在反转后变为最大。这在组合多个检测器时非常有用,因为它们的评分顺序可能不同。
参数¶
- scores列表、数组或 numpy 数组,形状为 (n_samples,)
要反转的值列表
- method字符串,可选(默认=’multiplication’)
用于顺序反转的方法。有效方法包括
‘multiplication’:乘以 -1
‘subtraction’:max(scores) - scores
返回值¶
- inverted_scoresnumpy 数组,形状为 (n_samples,)
反转后的列表
示例¶
>>> scores1 = [0.1, 0.3, 0.5, 0.7, 0.2, 0.1] >>> invert_order(scores1) array([-0.1, -0.3, -0.5, -0.7, -0.2, -0.1]) >>> invert_order(scores1, method='subtraction') array([0.6, 0.4, 0.2, 0. , 0.5, 0.6])
- pyod.utils.utility.precision_n_scores(y, y_pred, n=None)[source]¶
用于计算 Precision @ rank n 的实用函数。
参数¶
- y列表或 numpy 数组,形状为 (n_samples,)
真实标签。二元(0:正常点,1:离群点)。
- y_pred列表或 numpy 数组,形状为 (n_samples,)
已拟合模型返回的原始离群值分数。
- n整型,可选(默认=None)
离群点数量。如果未定义,则使用真实标签推断。
返回值¶
- precision_at_rank_n浮点型
Precision at rank n 分数。
- pyod.utils.utility.score_to_label(pred_scores, outliers_fraction=0.1)[source]¶
将原始离群点分数转换为二元标签(0 或 1)。
参数¶
- pred_scores列表或 numpy 数组,形状为 (n_samples,)
原始离群点分数。假定离群点具有较大的值。
- outliers_fraction浮点型,取值范围 (0,1)
离群点百分比。
返回值¶
- outlier_labelsnumpy 数组,形状为 (n_samples,)
对于每个观测值,根据拟合模型判断它是否应被视为离群点。返回离群点概率,范围在 [0,1] 之间。
- pyod.utils.utility.standardizer(X, X_t=None, keep_scalar=False)[source]¶
对数据进行 Z-标准化,使输入样本变为零均值和单位方差。
参数¶
- Xnumpy 数组,形状为 (n_samples, n_features)
训练样本
- X_tnumpy 数组,形状为 (n_samples_new, n_features),可选(默认=None)
要转换的数据
- keep_scalar布尔型,可选(默认=False)
指示是否返回标量(scalar)的标志
返回值¶
- X_normnumpy 数组,形状为 (n_samples, n_features)
Z-score 标准化后的 X
- X_t_normnumpy 数组,形状为 (n_samples, n_features)
Z-score 标准化后的 X_t
- scalarsklearn 标量(scalar)对象
转换中使用的标量(scalar)