pyod 3.2.1__tar.gz → 3.4.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. {pyod-3.2.1/pyod.egg-info → pyod-3.4.0}/PKG-INFO +101 -101
  2. {pyod-3.2.1 → pyod-3.4.0}/README.rst +100 -100
  3. {pyod-3.2.1 → pyod-3.4.0}/pyod/mcp_server.py +461 -283
  4. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/od_expert/references/graph.md +164 -163
  5. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/od_expert/references/pitfalls.md +125 -125
  6. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/od_expert/references/tabular.md +157 -156
  7. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/od_expert/references/text_image.md +143 -142
  8. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/od_expert/references/time_series.md +149 -148
  9. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/od_expert/references/workflow.md +22 -5
  10. pyod-3.4.0/pyod/utils/_detector_factory.py +93 -0
  11. pyod-3.4.0/pyod/utils/_kb_router.py +267 -0
  12. pyod-3.4.0/pyod/utils/_nl_feedback.py +451 -0
  13. pyod-3.4.0/pyod/utils/_quality_metrics.py +500 -0
  14. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/ad_engine.py +1639 -1650
  15. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/investigation.py +76 -75
  16. {pyod-3.2.1 → pyod-3.4.0}/pyod/version.py +1 -1
  17. {pyod-3.2.1 → pyod-3.4.0/pyod.egg-info}/PKG-INFO +101 -101
  18. {pyod-3.2.1 → pyod-3.4.0}/pyod.egg-info/SOURCES.txt +4 -0
  19. {pyod-3.2.1 → pyod-3.4.0}/LICENSE +0 -0
  20. {pyod-3.2.1 → pyod-3.4.0}/MANIFEST.in +0 -0
  21. {pyod-3.2.1 → pyod-3.4.0}/pyod/__init__.py +0 -0
  22. {pyod-3.2.1 → pyod-3.4.0}/pyod/cli.py +0 -0
  23. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/__init__.py +0 -0
  24. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/_pyg_utils.py +0 -0
  25. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/_ts_utils.py +0 -0
  26. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/abod.py +0 -0
  27. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ae1svm.py +0 -0
  28. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/alad.py +0 -0
  29. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/anogan.py +0 -0
  30. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/auto_encoder.py +0 -0
  31. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/base.py +0 -0
  32. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/base_dl.py +0 -0
  33. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/cblof.py +0 -0
  34. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/cd.py +0 -0
  35. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/cof.py +0 -0
  36. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/combination.py +0 -0
  37. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/copod.py +0 -0
  38. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/deep_svdd.py +0 -0
  39. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/devnet.py +0 -0
  40. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/dif.py +0 -0
  41. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ecod.py +0 -0
  42. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/embedding.py +0 -0
  43. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/feature_bagging.py +0 -0
  44. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/gaal_base.py +0 -0
  45. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/gmm.py +0 -0
  46. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/hbos.py +0 -0
  47. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/hdbscan.py +0 -0
  48. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/iforest.py +0 -0
  49. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/inne.py +0 -0
  50. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/kde.py +0 -0
  51. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/knn.py +0 -0
  52. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/kpca.py +0 -0
  53. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/lmdd.py +0 -0
  54. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/loci.py +0 -0
  55. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/loda.py +0 -0
  56. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/lof.py +0 -0
  57. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/lscp.py +0 -0
  58. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/lunar.py +0 -0
  59. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/mad.py +0 -0
  60. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/mcd.py +0 -0
  61. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/mo_gaal.py +0 -0
  62. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ocsvm.py +0 -0
  63. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pca.py +0 -0
  64. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pyg_anomalous.py +0 -0
  65. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pyg_anomalydae.py +0 -0
  66. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pyg_cola.py +0 -0
  67. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pyg_conad.py +0 -0
  68. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pyg_dominant.py +0 -0
  69. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pyg_guide.py +0 -0
  70. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pyg_radar.py +0 -0
  71. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/pyg_scan.py +0 -0
  72. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/qmcd.py +0 -0
  73. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/rgraph.py +0 -0
  74. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/rod.py +0 -0
  75. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/sampling.py +0 -0
  76. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/sklearn_base.py +0 -0
  77. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/so_gaal.py +0 -0
  78. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/so_gaal_new.py +0 -0
  79. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/sod.py +0 -0
  80. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/sos.py +0 -0
  81. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/suod.py +0 -0
  82. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/thresholds.py +0 -0
  83. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ts_anomaly_transformer.py +0 -0
  84. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ts_kshape.py +0 -0
  85. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ts_lstm.py +0 -0
  86. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ts_matrix_profile.py +0 -0
  87. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ts_od.py +0 -0
  88. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ts_sand.py +0 -0
  89. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/ts_spectral_residual.py +0 -0
  90. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/vae.py +0 -0
  91. {pyod-3.2.1 → pyod-3.4.0}/pyod/models/xgbod.py +0 -0
  92. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/__init__.py +0 -0
  93. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/od_expert/SKILL.md +0 -0
  94. {pyod-3.2.1 → pyod-3.4.0}/pyod/skills/od_expert/__init__.py +0 -0
  95. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/__init__.py +0 -0
  96. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/auto_model_selector.py +0 -0
  97. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/data.py +0 -0
  98. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/encoders/__init__.py +0 -0
  99. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/encoders/huggingface.py +0 -0
  100. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/encoders/openai_encoder.py +0 -0
  101. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/encoders/sentence_transformer.py +0 -0
  102. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/example.py +0 -0
  103. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/knowledge/__init__.py +0 -0
  104. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/knowledge/algorithms.json +0 -0
  105. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/knowledge/benchmarks.json +0 -0
  106. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/knowledge/papers.json +0 -0
  107. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/knowledge/routing_rules.json +0 -0
  108. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AE1SVM.json +0 -0
  109. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/ALAD.json +0 -0
  110. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AnoGAN.json +0 -0
  111. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/AutoEncoder.json +0 -0
  112. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/Deep SVDD.json +0 -0
  113. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/DevNet.json +0 -0
  114. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/LUNAR.json +0 -0
  115. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/MO-GAAL.json +0 -0
  116. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/SO-GAAL.json +0 -0
  117. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/VAE.json +0 -0
  118. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/model_analysis_jsons/__init__.py +0 -0
  119. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/stat_models.py +0 -0
  120. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/torch_utility.py +0 -0
  121. {pyod-3.2.1 → pyod-3.4.0}/pyod/utils/utility.py +0 -0
  122. {pyod-3.2.1 → pyod-3.4.0}/pyod.egg-info/dependency_links.txt +0 -0
  123. {pyod-3.2.1 → pyod-3.4.0}/pyod.egg-info/entry_points.txt +0 -0
  124. {pyod-3.2.1 → pyod-3.4.0}/pyod.egg-info/requires.txt +0 -0
  125. {pyod-3.2.1 → pyod-3.4.0}/pyod.egg-info/top_level.txt +0 -0
  126. {pyod-3.2.1 → pyod-3.4.0}/pyproject.toml +0 -0
  127. {pyod-3.2.1 → pyod-3.4.0}/requirements.txt +0 -0
  128. {pyod-3.2.1 → pyod-3.4.0}/setup.cfg +0 -0
  129. {pyod-3.2.1 → pyod-3.4.0}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pyod
3
- Version: 3.2.1
3
+ Version: 3.4.0
4
4
  Summary: A Python library for anomaly detection across tabular, time series, graph, text, and image data. 60+ detectors, benchmark-backed ADEngine orchestration, and an agentic workflow for AI agents.
5
5
  Author-email: Yue Zhao <yzhao062@gmail.com>
6
6
  License-Expression: BSD-2-Clause
@@ -122,7 +122,7 @@ Python Outlier Detection (PyOD) 3
122
122
 
123
123
  -----
124
124
 
125
- **PyOD is now agentic.** Any AI agent can drive an expert-level anomaly detection investigation on your data in plain English. The classic ``fit``/``predict`` API stays unchanged.
125
+ **PyOD is agent-ready.** Claude Code and Codex can use the ``od-expert`` skill to drive ADEngine investigations, while MCP-compatible agents can query PyOD's detector knowledge and planning tools. The classic ``fit``/``predict`` API stays unchanged.
126
126
 
127
127
  -----
128
128
 
@@ -133,7 +133,7 @@ Pillar What it means
133
133
  =========================== ========================================================================================
134
134
  Multi-Modal 60+ detectors across **tabular, time series, graph, text, and image** data, one API
135
135
  Full Lifecycle From raw data to explained anomalies and next-step guidance in a single call
136
- Agentic Ask in plain English, and AI agents run expert-level detection without OD expertise
136
+ Agentic ``od-expert`` turns natural-language requests into ADEngine workflows; MCP exposes structured tools for other agents
137
137
  Most Used 38+ million downloads; benchmark-backed routing (ADBench, TSB-AD, BOND, NLP-ADBench)
138
138
  =========================== ========================================================================================
139
139
 
@@ -167,7 +167,7 @@ which agent stack you have installed (``~/.claude/`` for Claude Code,
167
167
  ``~/.codex/`` for Codex) and recommends the right install command.
168
168
 
169
169
  For conda, source install, dependency details, and troubleshooting,
170
- see the full `installation guide <https://pyod.readthedocs.io/en/latest/install.html>`_.
170
+ see the full `installation guide <https://pyod.readthedocs.io/en/latest/install.html>`__.
171
171
  The legacy ``pyod-install-skill`` command from v3.0.0 still works as an
172
172
  alias for ``pyod install skill``.
173
173
 
@@ -191,7 +191,7 @@ Layer Name When to use
191
191
  3 Agentic Investigation You want an AI agent to drive OD through natural conversation `Layer 3 walkthrough <https://pyod.readthedocs.io/en/latest/examples/agentic.html>`__
192
192
  ========= ===================== ====================================================================== =======================================
193
193
 
194
- Layers 2 and 3 are powered by ``ADEngine``, PyOD's intelligent orchestration core. Layer 3 adds two agentic activation paths: the ``od-expert`` skill for Claude Code and Codex, and an MCP server (``python -m pyod.mcp_server``) that works with any MCP-compatible LLM out of the box. See the Install block above for detailed setup instructions.
194
+ Layers 2 and 3 are powered by ``ADEngine``, PyOD's intelligent orchestration core. The full multi-turn Layer 3 investigation flow is available through the ``od-expert`` skill for Claude Code and Codex. The MCP server (``python -m pyod.mcp_server``) exposes ten stateless tools for MCP-compatible LLMs, spanning knowledge queries (``list_detectors``, ``explain_detector``, ``compare_detectors``, ``get_benchmarks``), planning (``profile_data``, ``plan_detection``, ``build_detector``), and detection (``run_detection``, ``analyze_results``, ``explain_findings``); stateful ``investigate`` / ``iterate`` MCP tools are deferred.
195
195
 
196
196
  .. image:: https://raw.githubusercontent.com/yzhao062/pyod/development/docs/figs/agentic-demo.png
197
197
  :alt: PyOD 3 agentic investigation demo on cardiotocography dataset
@@ -201,7 +201,7 @@ Layers 2 and 3 are powered by ``ADEngine``, PyOD's intelligent orchestration cor
201
201
  The figure above shows a real 5-turn agentic conversation on the UCI Cardiotocography dataset. See the `full walkthrough <https://pyod.readthedocs.io/en/latest/examples/agentic.html>`__, runnable `agentic example <https://github.com/yzhao062/pyod/blob/development/examples/agentic_example.py>`__, or interactive `HTML demo <https://htmlpreview.github.io/?https://github.com/yzhao062/pyod/blob/development/examples/agentic_demo.html>`__.
202
202
 
203
203
  **PyOD Ecosystem & Resources**:
204
- `NLP-ADBench <https://github.com/USC-FORTIS/NLP-ADBench>`_ (NLP anomaly detection) | `TODS <https://github.com/datamllab/tods>`_ (time-series) | `PyGOD <https://pygod.org/>`_ (graph) | `ADBench <https://github.com/Minqi824/ADBench>`_ (benchmark) | `AD-LLM <https://arxiv.org/abs/2412.11142>`_ (LLM-based AD) [#Yang2024ad]_ | `Resources <https://github.com/yzhao062/anomaly-detection-resources>`_
204
+ `NLP-ADBench <https://github.com/USC-FORTIS/NLP-ADBench>`__ (NLP anomaly detection) | `TODS <https://github.com/datamllab/tods>`__ (time-series) | `PyGOD <https://pygod.org/>`__ (graph) | `ADBench <https://github.com/Minqi824/ADBench>`__ (benchmark) | `AD-LLM <https://arxiv.org/abs/2412.11142>`__ (LLM-based AD) [#Yang2024ad]_ | `Resources <https://github.com/yzhao062/anomaly-detection-resources>`__
205
205
 
206
206
  ----
207
207
 
@@ -209,7 +209,7 @@ The figure above shows a real 5-turn agentic conversation on the UCI Cardiotocog
209
209
  About PyOD
210
210
  ^^^^^^^^^^
211
211
 
212
- PyOD, established in 2017, is the longest-running and most widely used Python library for anomaly detection. With `38+ million downloads <https://pepy.tech/project/pyod>`_, it serves both academic research (featured in `Analytics Vidhya <https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/>`_, `KDnuggets <https://www.kdnuggets.com/2019/02/outlier-detection-methods-cheat-sheet.html>`_, and `Towards Data Science <https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1>`_) and commercial products.
212
+ PyOD, established in 2017, is the longest-running and most widely used Python library for anomaly detection. With `38+ million downloads <https://pepy.tech/project/pyod>`__, it serves both academic research (featured in `Analytics Vidhya <https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/>`__, `KDnuggets <https://www.kdnuggets.com/2019/02/outlier-detection-methods-cheat-sheet.html>`__, and `Towards Data Science <https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1>`__) and commercial products.
213
213
 
214
214
  V3 extends the library with ``ADEngine`` (intelligent orchestration) and the ``od-expert`` skill (agentic workflow), while keeping the classic ``fit``/``predict`` API fully backward-compatible. V3 is built on SUOD [#Zhao2021SUOD]_ for fast parallel training and numba JIT for per-model speedups.
215
215
 
@@ -218,21 +218,21 @@ V3 extends the library with ``ADEngine`` (intelligent orchestration) and the ``o
218
218
  =================================== ===========================================================================
219
219
  Area Examples
220
220
  =================================== ===========================================================================
221
- Space & science European Space Agency `OPS-SAT spacecraft telemetry benchmark <https://www.nature.com/articles/s41597-025-05035-3>`_ (*Nature Scientific Data*, 2025) uses PyOD for all 30 algorithms.
222
- Enterprise deployment Walmart (1M+ daily pricing updates, KDD 2019), Databricks (Kakapo framework integrating PyOD with MLflow/Hyperopt; insider-threat detection solution), IQVIA (123K+ pharmacy claims), Altair AI Studio, Ericsson (patent `WO2023166515A1 <https://patents.google.com/patent/WO2023166515A1>`_).
223
- Books `Outlier Detection in Python <https://www.manning.com/books/outlier-detection-in-python>`_ (Brett Kennedy, Manning); *Handbook of Anomaly Detection with Python* (Chris Kuo, Columbia); `Finding Ghosts in Your Data <https://link.springer.com/book/10.1007/978-1-4842-8870-2>`_ (Kevin Feasel, Apress).
224
- Courses DataCamp `Anomaly Detection in Python <https://www.datacamp.com/courses/anomaly-detection-in-python>`_ (19M+ platform learners), Manning `liveProject <https://www.manning.com/liveproject/using-pyod-and-ensembles-methods>`_, O'Reilly video edition, multiple Udemy courses.
225
- Podcasts `Talk Python To Me #497 <https://talkpython.fm/episodes/show/497/outlier-detection-with-python>`_, `Real Python Podcast #208 <https://realpython.com/podcasts/rpp/208/>`_.
226
- International Tutorials in 5 non-English languages: Chinese (CSDN, Zhihu, 搜狐, 机器之心, `aidoczh.com <https://www.aidoczh.com>`_ full doc translation), Japanese, Korean, German, Spanish.
221
+ Space & science European Space Agency `OPS-SAT spacecraft telemetry benchmark <https://www.nature.com/articles/s41597-025-05035-3>`__ (*Nature Scientific Data*, 2025) uses PyOD for all 30 algorithms.
222
+ Enterprise deployment Walmart (1M+ daily pricing updates, KDD 2019), Databricks (Kakapo framework integrating PyOD with MLflow/Hyperopt; insider-threat detection solution), IQVIA (123K+ pharmacy claims), Altair AI Studio, Ericsson (patent `WO2023166515A1 <https://patents.google.com/patent/WO2023166515A1>`__).
223
+ Books `Outlier Detection in Python <https://www.manning.com/books/outlier-detection-in-python>`__ (Brett Kennedy, Manning); *Handbook of Anomaly Detection with Python* (Chris Kuo, Columbia); `Finding Ghosts in Your Data <https://link.springer.com/book/10.1007/978-1-4842-8870-2>`__ (Kevin Feasel, Apress).
224
+ Courses DataCamp `Anomaly Detection in Python <https://www.datacamp.com/courses/anomaly-detection-in-python>`__ (19M+ platform learners), Manning `liveProject <https://www.manning.com/liveproject/using-pyod-and-ensembles-methods>`__, O'Reilly video edition, multiple Udemy courses.
225
+ Podcasts `Talk Python To Me #497 <https://talkpython.fm/episodes/show/497/outlier-detection-with-python>`__, `Real Python Podcast #208 <https://realpython.com/podcasts/rpp/208/>`__.
226
+ International Tutorials in 5 non-English languages: Chinese (CSDN, Zhihu, 搜狐, 机器之心, `aidoczh.com <https://www.aidoczh.com>`__ full doc translation), Japanese, Korean, German, Spanish.
227
227
  =================================== ===========================================================================
228
228
 
229
- See the `full impact page <https://pyod.readthedocs.io/en/latest/impact.html>`_ on Read the Docs for the complete list of citations, enterprise deployments, patents, and media coverage.
229
+ See the `full impact page <https://pyod.readthedocs.io/en/latest/impact.html>`__ on Read the Docs for the complete list of citations, enterprise deployments, patents, and media coverage.
230
230
 
231
231
  **Citing PyOD**:
232
232
 
233
233
  If you use PyOD in a scientific publication, we would appreciate citations to the following paper(s):
234
234
 
235
- `PyOD 2: A Python Library for Outlier Detection with LLM-powered Model Selection <https://arxiv.org/abs/2412.12154>`_ is available as a preprint. If you use PyOD in a scientific publication, we would appreciate citations to the following paper::
235
+ `PyOD 2: A Python Library for Outlier Detection with LLM-powered Model Selection <https://arxiv.org/abs/2412.12154>`__ is available as a preprint. If you use PyOD in a scientific publication, we would appreciate citations to the following paper::
236
236
 
237
237
  @inproceedings{chen2025pyod,
238
238
  title={Pyod 2: A python library for outlier detection with llm-powered model selection},
@@ -243,7 +243,7 @@ If you use PyOD in a scientific publication, we would appreciate citations to th
243
243
  }
244
244
 
245
245
 
246
- `PyOD paper <http://www.jmlr.org/papers/volume20/19-011/19-011.pdf>`_ is published in `Journal of Machine Learning Research (JMLR) <http://www.jmlr.org/>`_ (MLOSS track).::
246
+ `PyOD paper <http://www.jmlr.org/papers/volume20/19-011/19-011.pdf>`__ is published in `Journal of Machine Learning Research (JMLR) <http://www.jmlr.org/>`__ (MLOSS track).::
247
247
 
248
248
  @article{zhao2019pyod,
249
249
  author = {Zhao, Yue and Nasrullah, Zain and Li, Zheng},
@@ -261,18 +261,18 @@ or::
261
261
  Zhao, Y., Nasrullah, Z. and Li, Z., 2019. PyOD: A Python Toolbox for Scalable Outlier Detection. Journal of machine learning research (JMLR), 20(96), pp.1-7.
262
262
 
263
263
 
264
- For a broader perspective on anomaly detection, see our NeurIPS papers on `ADBench <https://arxiv.org/abs/2206.09426>`_ [#Han2022ADBench]_ and `ADGym <https://arxiv.org/abs/2309.15376>`_.
264
+ For a broader perspective on anomaly detection, see our NeurIPS papers on `ADBench <https://arxiv.org/abs/2206.09426>`__ [#Han2022ADBench]_ and `ADGym <https://arxiv.org/abs/2309.15376>`__.
265
265
 
266
266
 
267
267
  **Table of Contents**:
268
268
 
269
- * `API Cheatsheet & Reference <#api-cheatsheet--reference>`_
270
- * `Benchmarks <#benchmarks>`_
271
- * `Implemented Algorithms <#implemented-algorithms>`_ (Tabular, Time Series, Graph, Embedding)
272
- * `Additional Topics <#additional-topics>`_ (Model Save/Load, SUOD, Thresholding)
273
- * `Quick Start for Outlier Detection <#quick-start-for-outlier-detection>`_
274
- * `How to Contribute <#how-to-contribute>`_
275
- * `Inclusion Criteria <#inclusion-criteria>`_
269
+ * `API Cheatsheet & Reference <#api-cheatsheet--reference>`__
270
+ * `Benchmarks <#benchmarks>`__
271
+ * `Implemented Algorithms <#implemented-algorithms>`__ (Tabular, Time Series, Graph, Embedding)
272
+ * `Additional Topics <#additional-topics>`__ (Model Save/Load, SUOD, Thresholding)
273
+ * `Quick Start for Outlier Detection <#quick-start-for-outlier-detection>`__
274
+ * `How to Contribute <#how-to-contribute>`__
275
+ * `Inclusion Criteria <#inclusion-criteria>`__
276
276
 
277
277
  ----
278
278
 
@@ -280,7 +280,7 @@ For a broader perspective on anomaly detection, see our NeurIPS papers on `ADBen
280
280
  API Cheatsheet & Reference
281
281
  ^^^^^^^^^^^^^^^^^^^^^^^^^^
282
282
 
283
- The full API Reference is split by modality at `PyOD Documentation <https://pyod.readthedocs.io/en/latest/>`_: `Tabular <https://pyod.readthedocs.io/en/latest/pyod.models.tabular.html>`_, `Time Series <https://pyod.readthedocs.io/en/latest/pyod.models.timeseries.html>`_, `Graph <https://pyod.readthedocs.io/en/latest/pyod.models.graph.html>`_, `Embedding <https://pyod.readthedocs.io/en/latest/pyod.models.embedding.html>`_, `ADEngine <https://pyod.readthedocs.io/en/latest/pyod.ad_engine.html>`_, `Utilities <https://pyod.readthedocs.io/en/latest/pyod.utils.html>`_. Below is a quick cheatsheet for all detectors:
283
+ The full API Reference is split by modality at `PyOD Documentation <https://pyod.readthedocs.io/en/latest/>`__: `Tabular <https://pyod.readthedocs.io/en/latest/pyod.models.tabular.html>`__, `Time Series <https://pyod.readthedocs.io/en/latest/pyod.models.timeseries.html>`__, `Graph <https://pyod.readthedocs.io/en/latest/pyod.models.graph.html>`__, `Embedding <https://pyod.readthedocs.io/en/latest/pyod.models.embedding.html>`__, `ADEngine <https://pyod.readthedocs.io/en/latest/pyod.ad_engine.html>`__, `Utilities <https://pyod.readthedocs.io/en/latest/pyod.utils.html>`__. Below is a quick cheatsheet for all detectors:
284
284
 
285
285
  * **fit(X)**: Fit the detector. The parameter y is ignored in unsupervised methods.
286
286
  * **decision_function(X)**: Predict raw anomaly scores for X using the fitted detector.
@@ -301,19 +301,19 @@ The full API Reference is split by modality at `PyOD Documentation <https://pyod
301
301
  Benchmarks
302
302
  ^^^^^^^^^^
303
303
 
304
- * `ADBench <https://github.com/Minqi824/ADBench>`_ [#Han2022ADBench]_: 30 algorithms on 57 tabular datasets. See `comparison <https://github.com/yzhao062/pyod/blob/master/examples/compare_all_models.py>`_.
305
- * `NLP-ADBench <https://github.com/USC-FORTIS/NLP-ADBench>`_: 19 methods on 8 text datasets. Two-step (embedding + detector) beats end-to-end.
306
- * `TSB-AD <https://github.com/TheDatumOrg/TSB-AD>`_ [#Liu2024TSB]_: 40 algorithms on 1070 time series datasets (NeurIPS 2024).
307
- * `BOND <https://arxiv.org/abs/2206.10071>`_ [#Liu2022BOND]_: 14 graph anomaly detection algorithms on 14 datasets (NeurIPS 2022).
304
+ * `ADBench <https://github.com/Minqi824/ADBench>`__ [#Han2022ADBench]_: 30 algorithms on 57 tabular datasets. See `comparison <https://github.com/yzhao062/pyod/blob/master/examples/compare_all_models.py>`__.
305
+ * `NLP-ADBench <https://github.com/USC-FORTIS/NLP-ADBench>`__: 19 methods on 8 text datasets. Two-step (embedding + detector) beats end-to-end.
306
+ * `TSB-AD <https://github.com/TheDatumOrg/TSB-AD>`__ [#Liu2024TSB]_: 40 algorithms on 1070 time series datasets (NeurIPS 2024).
307
+ * `BOND <https://arxiv.org/abs/2206.10071>`__ [#Liu2022BOND]_: 14 graph anomaly detection algorithms on 14 datasets (NeurIPS 2022).
308
308
 
309
309
  ----
310
310
 
311
311
  Additional Topics
312
312
  ^^^^^^^^^^^^^^^^^
313
313
 
314
- * `Model Save & Load <https://pyod.readthedocs.io/en/latest/model_persistence.html>`_: Use joblib or pickle for saving and loading PyOD models. See `example <https://github.com/yzhao062/pyod/blob/master/examples/save_load_model_example.py>`_.
315
- * `Fast Train with SUOD <https://pyod.readthedocs.io/en/latest/fast_train.html>`_: Accelerate training and prediction with the SUOD framework [#Zhao2021SUOD]_. See `example <https://github.com/yzhao062/pyod/blob/master/examples/suod_example.py>`_.
316
- * `Thresholding Outlier Scores <https://pyod.readthedocs.io/en/latest/thresholding.html>`_: Data-driven approaches for setting contamination levels via `PyThresh <https://github.com/KulikDM/pythresh>`_.
314
+ * `Model Save & Load <https://pyod.readthedocs.io/en/latest/model_persistence.html>`__: Use joblib or pickle for saving and loading PyOD models. See `example <https://github.com/yzhao062/pyod/blob/master/examples/save_load_model_example.py>`__.
315
+ * `Fast Train with SUOD <https://pyod.readthedocs.io/en/latest/fast_train.html>`__: Accelerate training and prediction with the SUOD framework [#Zhao2021SUOD]_. See `example <https://github.com/yzhao062/pyod/blob/master/examples/suod_example.py>`__.
316
+ * `Thresholding Outlier Scores <https://pyod.readthedocs.io/en/latest/thresholding.html>`__: Data-driven approaches for setting contamination levels via `PyThresh <https://github.com/KulikDM/pythresh>`__.
317
317
 
318
318
  ----
319
319
 
@@ -337,212 +337,212 @@ PyOD is organized into two functional groups: **(i) Detection Algorithms**, with
337
337
  - Ref
338
338
  * - Probabilistic
339
339
  - ECOD
340
- - Unsupervised Outlier Detection Using Empirical Cumulative Distribution Functions (`example <https://github.com/yzhao062/pyod/blob/development/examples/ecod_example.py>`_)
340
+ - Unsupervised Outlier Detection Using Empirical Cumulative Distribution Functions (`example <https://github.com/yzhao062/pyod/blob/development/examples/ecod_example.py>`__)
341
341
  - 2022
342
342
  - [#Li2021ECOD]_
343
343
  * - Probabilistic
344
344
  - ABOD
345
- - Angle-Based Outlier Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/abod_example.py>`_)
345
+ - Angle-Based Outlier Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/abod_example.py>`__)
346
346
  - 2008
347
347
  - [#Kriegel2008Angle]_
348
348
  * - Probabilistic
349
349
  - FastABOD
350
- - Fast Angle-Based Outlier Detection using approximation (`example <https://github.com/yzhao062/pyod/blob/development/examples/abod_example.py>`_)
350
+ - Fast Angle-Based Outlier Detection using approximation (`example <https://github.com/yzhao062/pyod/blob/development/examples/abod_example.py>`__)
351
351
  - 2008
352
352
  - [#Kriegel2008Angle]_
353
353
  * - Probabilistic
354
354
  - COPOD
355
- - COPOD: Copula-Based Outlier Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/copod_example.py>`_)
355
+ - COPOD: Copula-Based Outlier Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/copod_example.py>`__)
356
356
  - 2020
357
357
  - [#Li2020COPOD]_
358
358
  * - Probabilistic
359
359
  - MAD
360
- - Median Absolute Deviation (MAD) (`example <https://github.com/yzhao062/pyod/blob/development/examples/mad_example.py>`_)
360
+ - Median Absolute Deviation (MAD) (`example <https://github.com/yzhao062/pyod/blob/development/examples/mad_example.py>`__)
361
361
  - 1993
362
362
  - [#Iglewicz1993How]_
363
363
  * - Probabilistic
364
364
  - SOS
365
- - Stochastic Outlier Selection (`example <https://github.com/yzhao062/pyod/blob/development/examples/sos_example.py>`_)
365
+ - Stochastic Outlier Selection (`example <https://github.com/yzhao062/pyod/blob/development/examples/sos_example.py>`__)
366
366
  - 2012
367
367
  - [#Janssens2012Stochastic]_
368
368
  * - Probabilistic
369
369
  - QMCD
370
- - Quasi-Monte Carlo Discrepancy outlier detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/qmcd_example.py>`_)
370
+ - Quasi-Monte Carlo Discrepancy outlier detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/qmcd_example.py>`__)
371
371
  - 2001
372
372
  - [#Fang2001Wrap]_
373
373
  * - Probabilistic
374
374
  - KDE
375
- - Outlier Detection with Kernel Density Functions (`example <https://github.com/yzhao062/pyod/blob/development/examples/kde_example.py>`_)
375
+ - Outlier Detection with Kernel Density Functions (`example <https://github.com/yzhao062/pyod/blob/development/examples/kde_example.py>`__)
376
376
  - 2007
377
377
  - [#Latecki2007Outlier]_
378
378
  * - Probabilistic
379
379
  - Sampling
380
- - Rapid distance-based outlier detection via sampling (`example <https://github.com/yzhao062/pyod/blob/development/examples/sampling_example.py>`_)
380
+ - Rapid distance-based outlier detection via sampling (`example <https://github.com/yzhao062/pyod/blob/development/examples/sampling_example.py>`__)
381
381
  - 2013
382
382
  - [#Sugiyama2013Rapid]_
383
383
  * - Probabilistic
384
384
  - GMM
385
- - Probabilistic Mixture Modeling for Outlier Analysis (`example <https://github.com/yzhao062/pyod/blob/development/examples/gmm_example.py>`_)
385
+ - Probabilistic Mixture Modeling for Outlier Analysis (`example <https://github.com/yzhao062/pyod/blob/development/examples/gmm_example.py>`__)
386
386
  -
387
387
  - [#Aggarwal2015Outlier]_ [Ch.2]
388
388
  * - Linear Model
389
389
  - PCA
390
- - Principal Component Analysis (sum of weighted projected distances to eigenvector hyperplanes) (`example <https://github.com/yzhao062/pyod/blob/development/examples/pca_example.py>`_)
390
+ - Principal Component Analysis (sum of weighted projected distances to eigenvector hyperplanes) (`example <https://github.com/yzhao062/pyod/blob/development/examples/pca_example.py>`__)
391
391
  - 2003
392
392
  - [#Shyu2003A]_
393
393
  * - Linear Model
394
394
  - KPCA
395
- - Kernel Principal Component Analysis (`example <https://github.com/yzhao062/pyod/blob/development/examples/kpca_example.py>`_)
395
+ - Kernel Principal Component Analysis (`example <https://github.com/yzhao062/pyod/blob/development/examples/kpca_example.py>`__)
396
396
  - 2007
397
397
  - [#Hoffmann2007Kernel]_
398
398
  * - Linear Model
399
399
  - MCD
400
- - Minimum Covariance Determinant (Mahalanobis distances as outlier scores) (`example <https://github.com/yzhao062/pyod/blob/development/examples/mcd_example.py>`_)
400
+ - Minimum Covariance Determinant (Mahalanobis distances as outlier scores) (`example <https://github.com/yzhao062/pyod/blob/development/examples/mcd_example.py>`__)
401
401
  - 1999
402
402
  - [#Hardin2004Outlier]_ [#Rousseeuw1999A]_
403
403
  * - Linear Model
404
404
  - CD
405
- - Cook's distance for outlier detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/cd_example.py>`_)
405
+ - Cook's distance for outlier detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/cd_example.py>`__)
406
406
  - 1977
407
407
  - [#Cook1977Detection]_
408
408
  * - Linear Model
409
409
  - OCSVM
410
- - One-Class Support Vector Machines (`example <https://github.com/yzhao062/pyod/blob/development/examples/ocsvm_example.py>`_)
410
+ - One-Class Support Vector Machines (`example <https://github.com/yzhao062/pyod/blob/development/examples/ocsvm_example.py>`__)
411
411
  - 2001
412
412
  - [#Scholkopf2001Estimating]_
413
413
  * - Linear Model
414
414
  - LMDD
415
- - Deviation-based Outlier Detection (LMDD) (`example <https://github.com/yzhao062/pyod/blob/development/examples/lmdd_example.py>`_)
415
+ - Deviation-based Outlier Detection (LMDD) (`example <https://github.com/yzhao062/pyod/blob/development/examples/lmdd_example.py>`__)
416
416
  - 1996
417
417
  - [#Arning1996A]_
418
418
  * - Proximity-Based
419
419
  - LOF
420
- - Local Outlier Factor (`example <https://github.com/yzhao062/pyod/blob/development/examples/lof_example.py>`_)
420
+ - Local Outlier Factor (`example <https://github.com/yzhao062/pyod/blob/development/examples/lof_example.py>`__)
421
421
  - 2000
422
422
  - [#Breunig2000LOF]_
423
423
  * - Proximity-Based
424
424
  - COF
425
- - Connectivity-Based Outlier Factor (`example <https://github.com/yzhao062/pyod/blob/development/examples/cof_example.py>`_)
425
+ - Connectivity-Based Outlier Factor (`example <https://github.com/yzhao062/pyod/blob/development/examples/cof_example.py>`__)
426
426
  - 2002
427
427
  - [#Tang2002Enhancing]_
428
428
  * - Proximity-Based
429
429
  - (Incr.) COF
430
- - Memory Efficient Connectivity-Based Outlier Factor (slower, reduced storage) (`example <https://github.com/yzhao062/pyod/blob/development/examples/cof_example.py>`_)
430
+ - Memory Efficient Connectivity-Based Outlier Factor (slower, reduced storage) (`example <https://github.com/yzhao062/pyod/blob/development/examples/cof_example.py>`__)
431
431
  - 2002
432
432
  - [#Tang2002Enhancing]_
433
433
  * - Proximity-Based
434
434
  - CBLOF
435
- - Clustering-Based Local Outlier Factor (`example <https://github.com/yzhao062/pyod/blob/development/examples/cblof_example.py>`_)
435
+ - Clustering-Based Local Outlier Factor (`example <https://github.com/yzhao062/pyod/blob/development/examples/cblof_example.py>`__)
436
436
  - 2003
437
437
  - [#He2003Discovering]_
438
438
  * - Proximity-Based
439
439
  - LOCI
440
- - LOCI: Fast outlier detection via local correlation integral (`example <https://github.com/yzhao062/pyod/blob/development/examples/loci_example.py>`_)
440
+ - LOCI: Fast outlier detection via local correlation integral (`example <https://github.com/yzhao062/pyod/blob/development/examples/loci_example.py>`__)
441
441
  - 2003
442
442
  - [#Papadimitriou2003LOCI]_
443
443
  * - Proximity-Based
444
444
  - HBOS
445
- - Histogram-based Outlier Score (`example <https://github.com/yzhao062/pyod/blob/development/examples/hbos_example.py>`_)
445
+ - Histogram-based Outlier Score (`example <https://github.com/yzhao062/pyod/blob/development/examples/hbos_example.py>`__)
446
446
  - 2012
447
447
  - [#Goldstein2012Histogram]_
448
448
  * - Proximity-Based
449
449
  - HDBSCAN
450
- - Density-based clustering via hierarchical density estimates (`example <https://github.com/yzhao062/pyod/blob/development/examples/hdbscan_example.py>`_)
450
+ - Density-based clustering via hierarchical density estimates (`example <https://github.com/yzhao062/pyod/blob/development/examples/hdbscan_example.py>`__)
451
451
  - 2013
452
452
  - [#Campello2013Density]_
453
453
  * - Proximity-Based
454
454
  - kNN
455
- - k Nearest Neighbors (distance to k-th neighbor as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>`_)
455
+ - k Nearest Neighbors (distance to k-th neighbor as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>`__)
456
456
  - 2000
457
457
  - [#Ramaswamy2000Efficient]_
458
458
  * - Proximity-Based
459
459
  - AvgKNN
460
- - Average kNN (average distance to k neighbors as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>`_)
460
+ - Average kNN (average distance to k neighbors as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>`__)
461
461
  - 2002
462
462
  - [#Angiulli2002Fast]_
463
463
  * - Proximity-Based
464
464
  - MedKNN
465
- - Median kNN (median distance to k neighbors as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>`_)
465
+ - Median kNN (median distance to k neighbors as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>`__)
466
466
  - 2002
467
467
  - [#Angiulli2002Fast]_
468
468
  * - Proximity-Based
469
469
  - SOD
470
- - Subspace Outlier Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/sod_example.py>`_)
470
+ - Subspace Outlier Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/sod_example.py>`__)
471
471
  - 2009
472
472
  - [#Kriegel2009Outlier]_
473
473
  * - Proximity-Based
474
474
  - ROD
475
- - Rotation-based Outlier Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/rod_example.py>`_)
475
+ - Rotation-based Outlier Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/rod_example.py>`__)
476
476
  - 2020
477
477
  - [#Almardeny2020A]_
478
478
  * - Outlier Ensembles
479
479
  - IForest
480
- - Isolation Forest (`example <https://github.com/yzhao062/pyod/blob/development/examples/iforest_example.py>`_)
480
+ - Isolation Forest (`example <https://github.com/yzhao062/pyod/blob/development/examples/iforest_example.py>`__)
481
481
  - 2008
482
482
  - [#Liu2008Isolation]_
483
483
  * - Outlier Ensembles
484
484
  - INNE
485
- - Isolation-based Anomaly Detection via Nearest-Neighbor Ensembles (`example <https://github.com/yzhao062/pyod/blob/development/examples/inne_example.py>`_)
485
+ - Isolation-based Anomaly Detection via Nearest-Neighbor Ensembles (`example <https://github.com/yzhao062/pyod/blob/development/examples/inne_example.py>`__)
486
486
  - 2018
487
487
  - [#Bandaragoda2018Isolation]_
488
488
  * - Outlier Ensembles
489
489
  - DIF
490
- - Deep Isolation Forest for Anomaly Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/dif_example.py>`_)
490
+ - Deep Isolation Forest for Anomaly Detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/dif_example.py>`__)
491
491
  - 2023
492
492
  - [#Xu2023Deep]_
493
493
  * - Outlier Ensembles
494
494
  - FB
495
- - Feature Bagging (`example <https://github.com/yzhao062/pyod/blob/development/examples/feature_bagging_example.py>`_)
495
+ - Feature Bagging (`example <https://github.com/yzhao062/pyod/blob/development/examples/feature_bagging_example.py>`__)
496
496
  - 2005
497
497
  - [#Lazarevic2005Feature]_
498
498
  * - Outlier Ensembles
499
499
  - LSCP
500
- - LSCP: Locally Selective Combination of Parallel Outlier Ensembles (`example <https://github.com/yzhao062/pyod/blob/development/examples/lscp_example.py>`_)
500
+ - LSCP: Locally Selective Combination of Parallel Outlier Ensembles (`example <https://github.com/yzhao062/pyod/blob/development/examples/lscp_example.py>`__)
501
501
  - 2019
502
502
  - [#Zhao2019LSCP]_
503
503
  * - Outlier Ensembles
504
504
  - XGBOD
505
- - Extreme Boosting Based Outlier Detection **(Supervised)** (`example <https://github.com/yzhao062/pyod/blob/development/examples/xgbod_example.py>`_)
505
+ - Extreme Boosting Based Outlier Detection **(Supervised)** (`example <https://github.com/yzhao062/pyod/blob/development/examples/xgbod_example.py>`__)
506
506
  - 2018
507
507
  - [#Zhao2018XGBOD]_
508
508
  * - Outlier Ensembles
509
509
  - LODA
510
- - Lightweight On-line Detector of Anomalies (`example <https://github.com/yzhao062/pyod/blob/development/examples/loda_example.py>`_)
510
+ - Lightweight On-line Detector of Anomalies (`example <https://github.com/yzhao062/pyod/blob/development/examples/loda_example.py>`__)
511
511
  - 2016
512
512
  - [#Pevny2016Loda]_
513
513
  * - Outlier Ensembles
514
514
  - SUOD
515
- - SUOD: Accelerating Large-scale Unsupervised Heterogeneous OD **(Acceleration)** (`example <https://github.com/yzhao062/pyod/blob/development/examples/suod_example.py>`_)
515
+ - SUOD: Accelerating Large-scale Unsupervised Heterogeneous OD **(Acceleration)** (`example <https://github.com/yzhao062/pyod/blob/development/examples/suod_example.py>`__)
516
516
  - 2021
517
517
  - [#Zhao2021SUOD]_
518
518
  * - Neural Networks
519
519
  - AutoEncoder
520
- - Fully connected AutoEncoder (reconstruction error as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/auto_encoder_example.py>`_)
520
+ - Fully connected AutoEncoder (reconstruction error as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/auto_encoder_example.py>`__)
521
521
  -
522
522
  - [#Aggarwal2015Outlier]_ [Ch.3]
523
523
  * - Neural Networks
524
524
  - VAE
525
- - Variational AutoEncoder (reconstruction error as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/vae_example.py>`_)
525
+ - Variational AutoEncoder (reconstruction error as outlier score) (`example <https://github.com/yzhao062/pyod/blob/development/examples/vae_example.py>`__)
526
526
  - 2013
527
527
  - [#Kingma2013Auto]_
528
528
  * - Neural Networks
529
529
  - Beta-VAE
530
- - Variational AutoEncoder with customized loss (gamma and capacity) (`example <https://github.com/yzhao062/pyod/blob/development/examples/vae_example.py>`_)
530
+ - Variational AutoEncoder with customized loss (gamma and capacity) (`example <https://github.com/yzhao062/pyod/blob/development/examples/vae_example.py>`__)
531
531
  - 2018
532
532
  - [#Burgess2018Understanding]_
533
533
  * - Neural Networks
534
534
  - SO_GAAL
535
- - Single-Objective Generative Adversarial Active Learning (`example <https://github.com/yzhao062/pyod/blob/development/examples/so_gaal_example.py>`_)
535
+ - Single-Objective Generative Adversarial Active Learning (`example <https://github.com/yzhao062/pyod/blob/development/examples/so_gaal_example.py>`__)
536
536
  - 2019
537
537
  - [#Liu2019Generative]_
538
538
  * - Neural Networks
539
539
  - MO_GAAL
540
- - Multiple-Objective Generative Adversarial Active Learning (`example <https://github.com/yzhao062/pyod/blob/development/examples/mo_gaal_example.py>`_)
540
+ - Multiple-Objective Generative Adversarial Active Learning (`example <https://github.com/yzhao062/pyod/blob/development/examples/mo_gaal_example.py>`__)
541
541
  - 2019
542
542
  - [#Liu2019Generative]_
543
543
  * - Neural Networks
544
544
  - DeepSVDD
545
- - Deep One-Class Classification (`example <https://github.com/yzhao062/pyod/blob/development/examples/deepsvdd_example.py>`_)
545
+ - Deep One-Class Classification (`example <https://github.com/yzhao062/pyod/blob/development/examples/deepsvdd_example.py>`__)
546
546
  - 2018
547
547
  - [#Ruff2018Deep]_
548
548
  * - Neural Networks
@@ -552,37 +552,37 @@ PyOD is organized into two functional groups: **(i) Detection Algorithms**, with
552
552
  - [#Schlegl2017Unsupervised]_
553
553
  * - Neural Networks
554
554
  - ALAD
555
- - Adversarially learned anomaly detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/alad_example.py>`_)
555
+ - Adversarially learned anomaly detection (`example <https://github.com/yzhao062/pyod/blob/development/examples/alad_example.py>`__)
556
556
  - 2018
557
557
  - [#Zenati2018Adversarially]_
558
558
  * - Neural Networks
559
559
  - AE1SVM
560
- - Autoencoder-based One-class Support Vector Machine (`example <https://github.com/yzhao062/pyod/blob/development/examples/ae1svm_example.py>`_)
560
+ - Autoencoder-based One-class Support Vector Machine (`example <https://github.com/yzhao062/pyod/blob/development/examples/ae1svm_example.py>`__)
561
561
  - 2019
562
562
  - [#Nguyen2019scalable]_
563
563
  * - Neural Networks
564
564
  - DevNet
565
- - Deep Anomaly Detection with Deviation Networks (`example <https://github.com/yzhao062/pyod/blob/development/examples/devnet_example.py>`_)
565
+ - Deep Anomaly Detection with Deviation Networks (`example <https://github.com/yzhao062/pyod/blob/development/examples/devnet_example.py>`__)
566
566
  - 2019
567
567
  - [#Pang2019Deep]_
568
568
  * - Graph-based
569
569
  - R-Graph
570
- - Outlier detection by R-graph (`example <https://github.com/yzhao062/pyod/blob/development/examples/rgraph_example.py>`_)
570
+ - Outlier detection by R-graph (`example <https://github.com/yzhao062/pyod/blob/development/examples/rgraph_example.py>`__)
571
571
  - 2017
572
572
  - [#You2017Provable]_
573
573
  * - Graph-based
574
574
  - LUNAR
575
- - LUNAR: Unifying Local OD Methods via Graph Neural Networks (`example <https://github.com/yzhao062/pyod/blob/development/examples/lunar_example.py>`_)
575
+ - LUNAR: Unifying Local OD Methods via Graph Neural Networks (`example <https://github.com/yzhao062/pyod/blob/development/examples/lunar_example.py>`__)
576
576
  - 2022
577
577
  - [#Goodge2022Lunar]_
578
578
  * - Embedding-based
579
579
  - EmbeddingOD
580
- - Multi-modal anomaly detection via foundation model embeddings, text and image (`example <https://github.com/yzhao062/pyod/blob/development/examples/embedding_od_example.py>`_)
580
+ - Multi-modal anomaly detection via foundation model embeddings, text and image (`example <https://github.com/yzhao062/pyod/blob/development/examples/embedding_od_example.py>`__)
581
581
  - 2025
582
582
  - [#Li2024NLPADBench]_
583
583
 
584
584
 
585
- Ensemble methods (IForest, INNE, DIF, FB, LSCP, LODA, SUOD, XGBOD) are included in the table above. Score combination functions (average, maximization, AOM, MOA, median, majority vote) are in ``pyod.models.combination``. See `API docs <https://pyod.readthedocs.io/en/latest/pyod.models.tabular.html>`_ for details.
585
+ Ensemble methods (IForest, INNE, DIF, FB, LSCP, LODA, SUOD, XGBOD) are included in the table above. Score combination functions (average, maximization, AOM, MOA, median, majority vote) are in ``pyod.models.combination``. See `API docs <https://pyod.readthedocs.io/en/latest/pyod.models.tabular.html>`__ for details.
586
586
 
587
587
 
588
588
  **(i-b) Time Series Anomaly Detection** :
@@ -600,7 +600,7 @@ All time series detectors use the same ``fit``/``predict``/``decision_function``
600
600
  clf.fit(X_train) # shape (n_timestamps,) or (n_timestamps, n_channels)
601
601
  scores = clf.decision_scores_ # per-timestamp anomaly scores
602
602
 
603
- Algorithm rankings from `TSB-AD benchmark <https://github.com/TheDatumOrg/TSB-AD>`_ [#Liu2024TSB]_ (NeurIPS 2024, 1070 datasets):
603
+ Algorithm rankings from `TSB-AD benchmark <https://github.com/TheDatumOrg/TSB-AD>`__ [#Liu2024TSB]_ (NeurIPS 2024, 1070 datasets):
604
604
 
605
605
  .. list-table::
606
606
  :widths: 15 18 50 5 12
@@ -613,27 +613,27 @@ Algorithm rankings from `TSB-AD benchmark <https://github.com/TheDatumOrg/TSB-AD
613
613
  - Ref
614
614
  * - Windowed Bridge
615
615
  - TimeSeriesOD
616
- - Any PyOD detector on sliding windows (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_od_example.py>`_)
616
+ - Any PyOD detector on sliding windows (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_od_example.py>`__)
617
617
  - 2026
618
618
  -
619
619
  * - Subsequence
620
620
  - MatrixProfile
621
- - Matrix Profile via STOMP, transductive (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_matrix_profile_example.py>`_)
621
+ - Matrix Profile via STOMP, transductive (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_matrix_profile_example.py>`__)
622
622
  - 2016
623
623
  - [#Yeh2016Matrix]_
624
624
  * - Frequency
625
625
  - SpectralResidual
626
- - Spectral Residual: FFT-based saliency (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_spectral_residual_example.py>`_)
626
+ - Spectral Residual: FFT-based saliency (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_spectral_residual_example.py>`__)
627
627
  - 2019
628
628
  - [#Ren2019Time]_
629
629
  * - Clustering
630
630
  - KShape
631
- - k-Shape clustering (#2 in TSB-AD) (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_kshape_example.py>`_)
631
+ - k-Shape clustering (#2 in TSB-AD) (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_kshape_example.py>`__)
632
632
  - 2015
633
633
  - [#Paparrizos2015KShape]_
634
634
  * - Streaming
635
635
  - SAND
636
- - Streaming with drift adaptation, experimental (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_sand_example.py>`_)
636
+ - Streaming with drift adaptation, experimental (`example <https://github.com/yzhao062/pyod/blob/development/examples/ts_sand_example.py>`__)
637
637
  - 2021
638
638
  - [#Boniol2021SAND]_
639
639
  * - Deep Learning
@@ -661,7 +661,7 @@ All graph detectors are **transductive** in v1: use ``decision_scores_`` and ``l
661
661
  clf.fit(data) # PyG Data object
662
662
  scores = clf.decision_scores_ # per-node anomaly scores
663
663
 
664
- Algorithm rankings from `BOND benchmark <https://arxiv.org/abs/2206.10071>`_ [#Liu2022BOND]_ (NeurIPS 2022, 14 datasets):
664
+ Algorithm rankings from `BOND benchmark <https://arxiv.org/abs/2206.10071>`__ [#Liu2022BOND]_ (NeurIPS 2022, 14 datasets):
665
665
 
666
666
  .. list-table::
667
667
  :widths: 18 18 45 5 14
@@ -674,42 +674,42 @@ Algorithm rankings from `BOND benchmark <https://arxiv.org/abs/2206.10071>`_ [#L
674
674
  - Ref
675
675
  * - GCN Autoencoder
676
676
  - DOMINANT
677
- - GCN AE, structure + attribute reconstruction (#1 BOND deep) (`dominant example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_dominant_example.py>`_)
677
+ - GCN AE, structure + attribute reconstruction (#1 BOND deep) (`dominant example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_dominant_example.py>`__)
678
678
  - 2019
679
679
  - [#Ding2019DOMINANT]_
680
680
  * - Contrastive
681
681
  - CoLA
682
- - Contrastive self-supervised, local neighbor context (#2 BOND deep) (`cola example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_cola_example.py>`_)
682
+ - Contrastive self-supervised, local neighbor context (#2 BOND deep) (`cola example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_cola_example.py>`__)
683
683
  - 2022
684
684
  - [#Liu2022CoLA]_
685
685
  * - Contrastive+AE
686
686
  - CONAD
687
- - Contrastive with anomalous-view injection + dual reconstruction (`conad example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_conad_example.py>`_)
687
+ - Contrastive with anomalous-view injection + dual reconstruction (`conad example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_conad_example.py>`__)
688
688
  - 2022
689
689
  - [#Xu2022CONAD]_
690
690
  * - Attention AE
691
691
  - AnomalyDAE
692
- - GAT structure encoder + MLP attribute encoder (`anomalydae example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_anomalydae_example.py>`_)
692
+ - GAT structure encoder + MLP attribute encoder (`anomalydae example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_anomalydae_example.py>`__)
693
693
  - 2020
694
694
  - [#Fan2020AnomalyDAE]_
695
695
  * - Motif AE
696
696
  - GUIDE
697
- - Dual GCN AE on original + triangle-motif adjacency (`guide example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_guide_example.py>`_)
697
+ - Dual GCN AE on original + triangle-motif adjacency (`guide example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_guide_example.py>`__)
698
698
  - 2021
699
699
  - [#Yuan2021GUIDE]_
700
700
  * - Matrix Factor.
701
701
  - Radar
702
- - Residual analysis via matrix factorization (`radar example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_radar_example.py>`_)
702
+ - Residual analysis via matrix factorization (`radar example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_radar_example.py>`__)
703
703
  - 2017
704
704
  - [#Li2017Radar]_
705
705
  * - Matrix Factor.
706
706
  - ANOMALOUS
707
- - Joint MF with Laplacian regularization (`anomalous example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_anomalous_example.py>`_)
707
+ - Joint MF with Laplacian regularization (`anomalous example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_anomalous_example.py>`__)
708
708
  - 2018
709
709
  - [#Peng2018ANOMALOUS]_
710
710
  * - Structural
711
711
  - SCAN
712
- - Structural clustering, no features needed (`scan example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_scan_example.py>`_)
712
+ - Structural clustering, no features needed (`scan example <https://github.com/yzhao062/pyod/blob/development/examples/pyg_scan_example.py>`__)
713
713
  - 2007
714
714
  - [#Xu2007SCAN]_
715
715
 
@@ -738,16 +738,16 @@ Quick Start for Outlier Detection
738
738
 
739
739
  PyOD has been well acknowledged by the machine learning community with a few featured posts and tutorials.
740
740
 
741
- **Analytics Vidhya**: `An Awesome Tutorial to Learn Outlier Detection in Python using PyOD Library <https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/>`_
741
+ **Analytics Vidhya**: `An Awesome Tutorial to Learn Outlier Detection in Python using PyOD Library <https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/>`__
742
742
 
743
- **KDnuggets**: `Intuitive Visualization of Outlier Detection Methods <https://www.kdnuggets.com/2019/02/outlier-detection-methods-cheat-sheet.html>`_, `An Overview of Outlier Detection Methods from PyOD <https://www.kdnuggets.com/2019/06/overview-outlier-detection-methods-pyod.html>`_
743
+ **KDnuggets**: `Intuitive Visualization of Outlier Detection Methods <https://www.kdnuggets.com/2019/02/outlier-detection-methods-cheat-sheet.html>`__, `An Overview of Outlier Detection Methods from PyOD <https://www.kdnuggets.com/2019/06/overview-outlier-detection-methods-pyod.html>`__
744
744
 
745
- **Towards Data Science**: `Anomaly Detection for Dummies <https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1>`_
745
+ **Towards Data Science**: `Anomaly Detection for Dummies <https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1>`__
746
746
 
747
- `"examples/knn_example.py" <https://github.com/yzhao062/pyod/blob/master/examples/knn_example.py>`_
747
+ `"examples/knn_example.py" <https://github.com/yzhao062/pyod/blob/master/examples/knn_example.py>`__
748
748
  demonstrates the basic API of using kNN detector. **It is noted that the API across all other algorithms are consistent/similar**.
749
749
 
750
- More detailed instructions for running examples can be found in `examples directory <https://github.com/yzhao062/pyod/blob/master/examples>`_.
750
+ More detailed instructions for running examples can be found in `examples directory <https://github.com/yzhao062/pyod/blob/master/examples>`__.
751
751
 
752
752
 
753
753
  #. Initialize a kNN detector, fit the model, and make the prediction.