机器学习数据分析深度学习【免费下载链接】pyodA Python library for anomaly detection across tabular, time series, graph, text, image, and audio data. 60 detectors, benchmark-backed ADEngine orchestration, and an agentic workflow for AI agents.项目地址https://gitcode.com/gh_mirrors/py/pyod点击查看免费下载导读本指南以 PyOD 官方示例目录examples/为核心系统讲解异常检测示例脚本的安装前提、运行方式、命名与组织规则以及最常见的模块找不到No module named与未解析引用Unresolved reference问题的排查与修复方法。读完本文你将能独立运行 kNN、HBOS、ABOD、IForest 等 60 检测器的示例脚本掌握compare_all_models.py的全模型对比方法并理解示例底层依赖的generate_data、evaluate_print、visualize等工具函数的工作机制。一、运行示例的前置条件安装 PyOD所有示例脚本都以 PyOD 库为基础因此运行前必须确保 PyOD 已正确安装。官方推荐使用 pip 直接安装pip install pyod pip install --upgrade pyod # 确保安装的是最新版本安装完成之后有两种使用示例的方式复制粘贴代码将示例脚本中的核心代码段复制到自己的项目或交互式环境中直接运行直接运行脚本进入 examples/ 目录用 Python 直接执行对应的XXX_example.py文件。从 requirements.txt 可以看到PyOD 的核心依赖包括numpy、scipy、scikit-learn、matplotlib等这些依赖会随pip install pyod自动解析安装无需手动处理。二、示例的组织与命名规则PyOD 的示例遵循一套高度统一的命名规范便于按需检索命名模式示例文件统一命名为XXX_example.py其中XXX为对应检测器的模型名模型对应关系每个示例都能在 pyod/models/ 目录下找到对应的模型实现文件。例如示例文件 → 对应模型源码示例脚本对应模型源码knn_example.pypyod/models/knn.pyKNNhbos_example.pypyod/models/hbos.pyHBOSabod_example.pypyod/models/abod.pyABODiforest_example.pypyod/models/iforest.pyIForestlof_example.pypyod/models/lof.pyLOFocsvm_example.pypyod/models/ocsvm.pyOCSVM... 其余单个算法示例pyod/models/init.py 所列全部模型comb_example.py组合框架见 pyod/models/combination.py除了单个算法的示例外还有两类特殊的脚本comb_example.py演示如何将多个基础检测器base detectors的异常分数进行组合覆盖平均average、最大化maximization、中位数median、AOMAverage of Maximum与 MOAMaximum of Average五种组合框架compare_all_models.py在同一份合成数据上对比所有已实现的算法通过绘制决策边界直观比较各检测器的性能。此外部分示例还提供了对应的 Jupyter Notebook 版本存放于仓库的 notebooks/ 目录下如 notebooks/Benchmark.ipynb、notebooks/Compare All Models.ipynb、notebooks/Model Combination.ipynb适合交互式探索与演示。三、以 kNN 为例一个完整的示例运行流程knn_example.py 是理解 PyOD 标准流程的最佳入门脚本其执行路径可分解为四个阶段且这一流程在所有单模型示例如 hbos_example.py、abod_example.py、iforest_example.py中完全一致。3.1 导入与路径处理import os import sys # 临时解决方案当 pyod 未安装时用于相对导入 sys.path.append( os.path.abspath(os.path.join(os.path.dirname(__file__), ..))) from pyod.models.knn import KNN from pyod.utils.data import generate_data from pyod.utils.data import evaluate_print from pyod.utils.example import visualizesys.path.append(..)的作用是把仓库根目录加入模块搜索路径使得from pyod.models.knn import KNN能直接解析到本地源码。这是 pyod 未安装时的临时方案一旦通过 pip 安装了 pyod就可以删除这两行详见本文第五部分。3.2 生成合成数据contamination 0.1 # 异常值占比 n_train 200 # 训练样本数 n_test 100 # 测试样本数 # 生成样本数据 X_train, X_test, y_train, y_test \ generate_data(n_trainn_train, n_testn_test, n_features2, contaminationcontamination, random_state42)generate_data定义于 pyod/utils/data.py其核心逻辑_generate_data内部函数为正常样本由多元高斯分布生成异常样本由均匀分布生成即inliers coef * random_state.randn(n_inliers, n_features) offsetoutliers random_state.uniform(low-offset, highoffset, size(n_outliers, n_features))。标签y中 0 表示正常点inlier1 表示异常点outlier。关键参数如下参数默认值说明n_train1000训练样本数n_test500测试样本数n_features2特征维度contamination0.1异常点比例直接决定n_outliers的数量train_onlyFalse是否只生成训练集offset10高斯与均匀分布的值域偏移random_stateNone随机种子设为整数如 42可保证结果可复现3.3 训练与预测clf_name KNN clf KNN() clf.fit(X_train) # 训练集上的预测标签与异常分数 y_train_pred clf.labels_ # 二值标签0: 正常, 1: 异常 y_train_scores clf.decision_scores_ # 原始异常分数 # 测试集上的预测 y_test_pred clf.predict(X_test) # 异常标签0 或 1 y_test_scores clf.decision_function(X_test) # 异常分数这是 PyOD 统一的 API 约定fit(X)训练检测器后labels_与decision_scores_给出训练集的预测标签与原始分数predict(X)与decision_function(X)则作用于新样本。分数越高代表越可能是异常点。3.4 评估与可视化print(\nOn Training Data:) evaluate_print(clf_name, y_train, y_train_scores) print(\nOn Test Data:) evaluate_print(clf_name, y_test, y_test_scores) # 可视化结果 visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred, y_test_pred, show_figureTrue, save_figureTrue)evaluate_print同样位于 pyod/utils/data.py会一次性打印 ROC基于roc_auc_score与 Precision n基于precision_n_scores两项指标visualize定义于 pyod/utils/example.py生成一个 2×2 四宫格图左上为训练集真实标签、右上为训练集预测、左下为测试集真实标签、右下为测试集预测。注意该函数要求输入数据必须是二维X_train.shape[1] 2否则会抛出ValueError。show_figureTrue时弹窗显示save_figureTrue时以{clf_name}.png命名保存到当前目录dpi300。运行上述脚本后会得到类似下图的输出examples/KNN.png从图中可以直观验证训练集与测试集的预测标签分布与真实标签高度一致说明 KNN 检测器在该合成数据上表现良好。四、进阶示例组合框架与全模型对比4.1 comb_example.py多检测器分数组合comb_example.py 演示了异常检测中经典的集成组合思想单个检测器可能在某类数据上失效组合多个检测器的分数往往更稳健。其流程为读取数据优先从data/cardio.mat加载真实数据examples/data/cardio.mat若文件缺失则回退到generate_data(train_onlyTrue)生成合成数据标准化用 pyod/utils/utility.py 中的standardizer对训练/测试分数分别做标准化消除不同检测器分数量纲的差异构建 20 个基础检测器用k_list [10, 20, ..., 200]这 20 个不同的n_neighbors训练 20 个KNN(n_neighborsk, methodlargest)分数组合调用 pyod/models/combination.py 中的五种组合函数from pyod.models.combination import aom, moa, average, maximization, median y_by_average average(test_scores_norm) # 取所有检测器分数的平均 y_by_maximization maximization(test_scores_norm) # 取所有检测器分数的最大值 y_by_median median(test_scores_norm) # 取中位数 y_by_aom aom(test_scores_norm, n_buckets5) # 分桶后各桶取均值再取最大值 y_by_moa moa(test_scores_norm, n_buckets5) # 分桶后各桶取最大值再取均值每种组合结果都会通过evaluate_print输出 ROC 与 Precision n 指标方便横向比较哪种组合策略最优。4.2 compare_all_models.py一次对比全部算法compare_all_models.py 是仓库中最具代表性的全家桶脚本它在一份合成二维数据上同时拟合 25 个检测器ABOD、KNN、Average KNN、Median KNN、LOF、IForest、DIF、INNE、LSCP、Feature Bagging、SUOD、MCD、PCA、KPCA、GMM、LMDD、HBOS、COPOD、ECOD、KDE、QMCD、Sampling、LUNAR、CBLOF、OCSVM并逐个绘制决策边界。脚本的显著特点包括用warnings.filterwarnings(ignore)抑制警告以保证输出整洁合成数据由两个高斯簇inliers 均匀分布离群点outliers构成outliers_fraction 0.25clusters_separation [0]表示两簇不分离每个子图标注算法名称与误分类数errors并将结果保存为ALL.pngdpi300。运行后生成的整体对比图如下examples/ALL.png该脚本同时是学习如何为自己的数据接入不同检测器的模板只需在classifiers字典中增删条目即可扩展对比范围。脚本中 LSCP 还演示了用 10 个不同n_neighbors的 LOF 构建detector_list作为基础检测器集合的用法。五、常见问题排查No module named / Unresolved reference运行示例时若出现xxx module could not be found找不到模块或Unresolved reference未解析引用错误按以下步骤排查。5.1 第一步确认是否已用 pip 安装 pyodpip show pyod # 查看是否已安装及安装版本若已通过pip install pyod安装示例中的from pyod.models.knn import KNN会直接从 site-packages 解析无需任何额外处理可以放心删除脚本顶部的import sys与sys.path.append(..)两行直接导入即可。5.2 第二步未安装时的临时解决方案如果你只是下载了 GitHub 仓库源码而没有执行 pip 安装则必须确保脚本顶部包含以下两行代码示例才能通过相对导入找到本地源码import sys sys.path.append(..)这段代码把仓库根目录..即 examples 的上一级临时加入sys.path使import pyod.xxx能解析到本地 pyod/ 包。再次强调这只是 pyod 未安装时的临时解决方案。实际示例脚本中如 knn_example.py使用的是其更严谨的等价写法import os import sys sys.path.append( os.path.abspath(os.path.join(os.path.dirname(__file__), ..)))5.3 其他排查建议依赖缺失确认numpy、scipy、scikit-learn、matplotlib等依赖已安装参见 requirements.txt缺少依赖同样会导致 ImportError工作目录错误直接运行示例时请确保从 examples/ 目录内执行涉及相对数据路径如data/cardio.mat的脚本对当前工作目录敏感Notebook 用户对应示例的 Jupyter 版本见 notebooks/ 目录Notebook 中单元格内通常自带%cd等路径处理逻辑可直接运行。六、小结从示例到自有数据的迁移路径PyOD 的示例脚本不仅是跑通演示的代码更是一套可直接迁移到自有数据的模板。迁移时只需替换数据来源# 方式一使用合成数据示例默认 X_train, X_test, y_train, y_test generate_data( n_train200, n_test100, n_features2, contamination0.1, random_state42) # 方式二加载真实数据参考 comb_example.py 的 mat 文件读取方式 from scipy.io import loadmat mat loadmat(your_data.mat) # 需包含 X 与 y 两个字段 X, y mat[X], mat[y].ravel()随后套用统一的fit → predict/decision_function → evaluate_print → visualize流程即可快速验证任意 PyOD 检测器在你数据上的表现。结合 pyod/models/ 中的源码与 pyod/test/ 下的测试用例还能进一步深入每个算法的参数细节与实现原理。赞分享机器学习数据分析深度学习【免费下载链接】pyodA Python library for anomaly detection across tabular, time series, graph, text, image, and audio data. 60 detectors, benchmark-backed ADEngine orchestration, and an agentic workflow for AI agents.项目地址https://gitcode.com/gh_mirrors/py/pyod点击查看免费下载相关推荐PySOT常见问题完全解决指南从安装到运行的终极排查手册PySOT常见问题完全解决指南从安装到运行的终极排查手册 PySOTPython Single Object Tracking是商汤科技开发的 单目标跟踪计算机视觉深度学习ZeroClaw 故障排查完全指南从安装到运行的常见问题定位与修复ZeroClaw 故障排查完全指南从安装到运行的常见问题定位与修复 ZeroClaw 是一个可部署到任意操作系统与平台的自托管 AI 个人助理基础设施。无论你人工智能AI Agent交互助手工具调用MCP Clients本地部署Agent 工作流RAGStarRailAssistant常见问题解决大全从安装失败到运行异常的完整排查StarRailAssistant常见问题解决大全从安装失败到运行异常的完整排查 StarRailAssistant是崩坏星穹铁道的自动化工具能够实现自动锄GUI 自动化RPA上一篇Ente Auth 数据导出完全指南加密导出格式、CLI 自动化备份与本地备份恢复下一篇Dapr 版本发布流程深度解析从 Integration Build 到 Stable Release 的分级发布机制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考