
Una libreria Python per il rilevamento di anomalie su dati tabulari, serie temporali, grafi, testo, immagini e audio. Oltre 60 rilevatori, orchestrazione ADEngine basata su benchmark e un workflow agente per agenti IA.
.. image:: https://raw.githubusercontent.com/yzhao062/pyod/master/brand/pyod-icon.svg :target: https://pyod.dev :alt: Ecosistema PyOD :width: 84px
PyOD 3: Rilevamento anomalie agentico su larga scala
|badge_website| |badge_pypi| |badge_anaconda| |badge_docs| |badge_stars| |badge_forks| |badge_downloads| |badge_testing| |badge_coverage| |badge_maintainability| |badge_license| |badge_benchmark|
.. |badge_website| image:: https://img.shields.io/badge/website-pyod.dev-990000 :target: https://pyod.dev :alt: Sito web
.. |badge_pypi| image:: https://img.shields.io/pypi/v/pyod.svg?color=brightgreen :target: https://pypi.org/project/pyod/ :alt: Versione PyPI
.. |badge_anaconda| image:: https://anaconda.org/conda-forge/pyod/badges/version.svg :target: https://anaconda.org/conda-forge/pyod :alt: Versione Anaconda
.. |badge_docs| image:: https://readthedocs.org/projects/pyod/badge/?version=latest :target: https://pyod.readthedocs.io/en/latest/?badge=latest :alt: Stato documentazione
.. |badge_stars| image:: https://img.shields.io/github/stars/yzhao062/pyod.svg :target: https://github.com/yzhao062/pyod/stargazers :alt: Stelle GitHub
.. |badge_forks| image:: https://img.shields.io/github/forks/yzhao062/pyod.svg?color=blue :target: https://github.com/yzhao062/pyod/network :alt: Fork GitHub
.. |badge_downloads| image:: https://pepy.tech/badge/pyod :target: https://pepy.tech/project/pyod :alt: Download
.. |badge_testing| image:: https://github.com/yzhao062/pyod/actions/workflows/testing.yml/badge.svg :target: https://github.com/yzhao062/pyod/actions/workflows/testing.yml :alt: Test
.. |badge_coverage| image:: https://coveralls.io/repos/github/yzhao062/pyod/badge.svg :target: https://coveralls.io/github/yzhao062/pyod :alt: Stato copertura
.. |badge_maintainability| image:: https://api.codeclimate.com/v1/badges/bdc3d8d0454274c753c4/maintainability :target: https://codeclimate.com/github/yzhao062/Pyod/maintainability :alt: Manutenibilità
.. |badge_license| image:: https://img.shields.io/github/license/yzhao062/pyod.svg :target: https://github.com/yzhao062/pyod/blob/master/LICENSE :alt: Licenza
.. |badge_benchmark| image:: https://img.shields.io/badge/ADBench-benchmark_results-pink :target: https://github.com/Minqi824/ADBench :alt: Benchmark
**PyOD è pronto per gli agenti.** Claude Code e Codex possono usare lo skill ``od-expert`` per guidare le indagini ADEngine, mentre gli agenti compatibili MCP possono interrogare gli strumenti di conoscenza e pianificazione dei detector di PyOD. La classica API ``fit``/``predict`` rimane invariata.
PyOD 3 è la libreria Python più completa per il rilevamento di anomalie. Quattro pilastri:
=========================== ========================================================================================
Pilastro Cosa significa
=========================== ========================================================================================
Multi-modale 61 detector su dati tabellari, serie temporali, grafi, testo, immagini e audio, un'unica API
Ciclo di vita completo Dai dati grezzi alle anomalie spiegate e alle indicazioni per i passaggi successivi in un'unica chiamata
Agentico od-expert trasforma le richieste in linguaggio naturale in flussi di lavoro ADEngine; MCP espone strumenti strutturati per altri agenti
Più utilizzato 46+ milioni di download; instradamento supportato da benchmark (ADBench, TSB-AD, BOND, NLP-ADBench)
=========================== ========================================================================================
Installazione ^^^^^^^^^^^^^
Libreria principale (richiesta per ogni percorso di attivazione):
.. code-block:: bash
pip install pyod
Quindi scegli il percorso di attivazione che corrisponde al tuo stack di agenti:
.. code-block:: bash
# 1. Claude Code / Codex — enables the od-expert skill
pyod install skill # Claude Code: user-global (~/.claude/skills/)
pyod install skill --project # Codex: project-local (./skills/, Codex has no user-global dir)
# 2. Any MCP-compatible LLM — requires the optional mcp extra
pip install pyod[mcp]
pyod mcp serve # alias for `python -m pyod.mcp_server`
# 3. Pure Python — no extra step
# from pyod.utils.ad_engine import ADEngine
Esegui pyod info in qualsiasi momento per vedere la versione, il numero di detector e lo stato di installazione di ciascun percorso di attivazione. pyod info rileva anche quale stack di agenti hai installato (~/.claude/ per Claude Code, ~/.codex/ per Codex) e consiglia il comando di installazione corretto.
Per conda, installazione da sorgente, dettagli sulle dipendenze e risoluzione dei problemi,
consulta la guida completa all'installazione <https://pyod.readthedocs.io/en/latest/install.html>__.
Il comando legacy pyod-install-skill della v3.0.0 funziona ancora come alias
di pyod install skill.
Rilevamento di outlier con 5 righe di codice (pip install pyod):
.. code-block:: python
from pyod.models.iforest import IForest
clf = IForest()
clf.fit(X_train)
y_train_scores = clf.decision_scores_ # training anomaly scores
y_test_scores = clf.decision_function(X_test) # test anomaly scores
Tre modi per usare PyOD:
========= ===================== ====================================================================== =======================================
Livello Nome Quando usarlo Punto di ingresso
========= ===================== ====================================================================== =======================================
1 API classica Sai quale detector vuoi Esempi del Livello 1 <https://pyod.readthedocs.io/en/latest/examples/tabular.html>__
2 ADEngine Vuoi che PyOD scelga, confronti e valuti automaticamente Procedura dettagliata del Livello 2 <https://pyod.readthedocs.io/en/latest/examples/adengine.html>__
3 Indagine agentica Vuoi che un agente AI guidi l'OD attraverso una conversazione naturale Procedura dettagliata del Livello 3 <https://pyod.readthedocs.io/en/latest/examples/agentic.html>__
========= ===================== ====================================================================== =======================================
I livelli 2 e 3 sono alimentati da ADEngine, il cuore dell'orchestrazione del ciclo di vita di PyOD. Il flusso completo di indagine multilivello del Livello 3 è disponibile tramite lo skill od-expert per Claude Code e Codex. Il server MCP (python -m pyod.mcp_server) espone dieci strumenti senza stato per LLM compatibili MCP, che coprono query di conoscenza (list_detectors, explain_detector, compare_detectors, get_benchmarks), pianificazione (profile_data, plan_detection, build_detector) e rilevamento (run_detection, analyze_results, explain_findings); gli strumenti MCP / con stato sono rimandati.
.. image:: https://raw.githubusercontent.com/yzhao062/pyod/development/docs/figs/agentic-demo.png :alt: Demo dell'indagine agentica PyOD 3 sul dataset cardiotocografia :align: center :width: 720
La figura sopra mostra una conversazione agentica reale in 5 turni sul dataset UCI Cardiotocography. Vedi la procedura dettagliata completa <https://pyod.readthedocs.io/en/latest/examples/agentic.html>, l'esempio agentico eseguibile <https://github.com/yzhao062/pyod/blob/development/examples/agentic_example.py> o la demo HTML interattiva <https://htmlpreview.github.io/?https://github.com/yzhao062/pyod/blob/development/examples/agentic_demo.html>__.
Ecosistema e risorse PyOD:
NLP-ADBench <https://github.com/USC-FORTIS/NLP-ADBench>__ (rilevamento anomalie NLP) | TODS <https://github.com/datamllab/tods>__ (serie temporali) | PyGOD <https://pygod.org/>__ (grafi) | ADBench <https://github.com/Minqi824/ADBench>__ (benchmark) | AD-LLM <https://arxiv.org/abs/2412.11142>__ (AD basato su LLM) [#Yang2024ad]_ | Risorse <https://github.com/yzhao062/anomaly-detection-resources>__
Informazioni su PyOD ^^^^^^^^^^^^^^^^^^^^
PyOD, nato nel 2017, è la libreria Python più longeva e più utilizzata per il rilevamento di anomalie. Con 46+ milioni di download <https://pepy.tech/project/pyod>, serve sia la ricerca accademica (presente 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>__ e Towards Data Science <https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1>__) sia i prodotti commerciali.
V3 estende la libreria con ADEngine (orchestrazione del ciclo di vita) e lo skill od-expert (flusso di lavoro agentico), mantenendo l'API classica fit/predict pienamente retrocompatibile. V3 è costruita su SUOD [#Zhao2021SUOD]_ per un addestramento parallelo veloce e su numba JIT per accelerazioni per-modello.
Impatto e riconoscimenti:
=================================== ===========================================================================
Area Esempi
=================================== ===========================================================================
Spazio e scienza L'Agenzia Spaziale Europea OPS-SAT spacecraft telemetry benchmark <https://www.nature.com/articles/s41597-025-05035-3>__ (Nature Scientific Data, 2025) usa PyOD per tutti i 30 algoritmi.
Distribuzione aziendale Walmart (oltre 1 milione di aggiornamenti giornalieri dei prezzi, KDD 2019), Databricks (framework Kakapo che integra PyOD con MLflow/Hyperopt; soluzione di rilevamento di minacce interne), IQVIA (oltre 123K richieste di farmacie), Altair AI Studio, Ericsson (brevetto WO2023166515A1 <https://patents.google.com/patent/WO2023166515A1>).
Libri 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).
Corsi DataCamp Anomaly Detection in Python <https://www.datacamp.com/courses/anomaly-detection-in-python>__ (oltre 19 milioni di iscritti alla piattaforma), Manning liveProject <https://www.manning.com/liveproject/using-pyod-and-ensembles-methods>, edizione video O'Reilly, numerosi corsi Udemy.
Podcast , ), giapponese, coreano, tedesco, spagnolo.
=================================== ===========================================================================
Consulta la pagina sull'impatto completa <https://pyod.readthedocs.io/en/latest/impact.html>__ su Read the Docs per l'elenco completo di citazioni, distribuzioni aziendali, brevetti e copertura mediatica.
Come citare PyOD:
Se usi PyOD in una pubblicazione scientifica, ti saremmo grati se citassi i seguenti articoli:
PyOD 2: A Python Library for Outlier Detection with LLM-powered Model Selection <https://arxiv.org/abs/2412.12154>__ è disponibile come preprint. Se usi PyOD in una pubblicazione scientifica, ti saremmo grati di citare il seguente articolo::
@inproceedings{chen2025pyod,
title={Pyod 2: A python library for outlier detection with llm-powered model selection},
author={Chen, Sihan and Qian, Zhuangzhuang and Siu, Wingchun and Hu, Xingcan and Li, Jiaqi and Li, Shawn and Qin, Yuehan and Yang, Tiankai and Xiao, Zhuo and Ye, Wanghao and others},
booktitle={Companion Proceedings of the ACM on Web Conference 2025},
pages={2807--2810},
year={2025}
}
Il paper di PyOD <http://www.jmlr.org/papers/volume20/19-011/19-011.pdf>__ è pubblicato in Journal of Machine Learning Research (JMLR) <http://www.jmlr.org/>__ (traccia MLOSS)::
@article{zhao2019pyod,
author = {Zhao, Yue and Nasrullah, Zain and Li, Zheng},
title = {PyOD: A Python Toolbox for Scalable Outlier Detection},
journal = {Journal of Machine Learning Research},
year = {2019},
volume = {20},
number = {96},
pages = {1-7},
url = {http://jmlr.org/papers/v20/19-011.html}
}
oppure::
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.
Per una prospettiva più ampia sul rilevamento di anomalie, consulta i nostri paper NeurIPS su ADBench <https://arxiv.org/abs/2206.09426>__ [#Han2022ADBench]_ e ADGym <https://arxiv.org/abs/2309.15376>__.
Indice:
API Cheatsheet e Riferimento <#api-cheatsheet--reference>__Benchmark <#benchmarks>__Algoritmi implementati <#implemented-algorithms>__ (Tabellari, Serie temporali, Grafi, Embedding)Argomenti aggiuntivi <#additional-topics>__ (Salvataggio/Caricamento modelli, SUOD, Thresholding)Avvio rapido per il rilevamento di outlier <#quick-start-for-outlier-detection>__Come contribuire <#how-to-contribute>__Criteri di inclusione <#inclusion-criteria>__API Cheatsheet e Riferimento ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Il riferimento API completo è suddiviso per modalità su PyOD Documentation <https://pyod.readthedocs.io/en/latest/>: Tabellare <https://pyod.readthedocs.io/en/latest/pyod.models.tabular.html>, Serie temporali <https://pyod.readthedocs.io/en/latest/pyod.models.timeseries.html>, Grafo <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>, Utilità <https://pyod.readthedocs.io/en/latest/pyod.utils.html>__. Di seguito un rapido riepilogo per tutti i detector:
Attributi chiave di un modello addestrato:
Benchmark ^^^^^^^^^^
ADBench <https://github.com/Minqi824/ADBench>__ [#Han2022ADBench]_: 30 algoritmi su 57 dataset tabellari. Vedi il confronto <https://github.com/yzhao062/pyod/blob/master/examples/compare_all_models.py>__.NLP-ADBench <https://github.com/USC-FORTIS/NLP-ADBench>__: 19 metodi su 8 dataset testuali. Il metodo a due fasi (embedding + detector) supera l'approccio end-to-end.TSB-AD <https://github.com/TheDatumOrg/TSB-AD>__ [#Liu2024TSB]_: 40 algoritmi su 1070 dataset di serie temporali (NeurIPS 2024).BOND <https://arxiv.org/abs/2206.10071>__ [#Liu2022BOND]_: 14 algoritmi di rilevamento di anomalie nei grafi su 14 dataset (NeurIPS 2022).Argomenti aggiuntivi ^^^^^^^^^^^^^^^^^^^^
Salvataggio e caricamento dei modelli <https://pyod.readthedocs.io/en/latest/model_persistence.html>: Usa joblib o pickle per salvare e caricare i modelli PyOD. Vedi l'esempio <https://github.com/yzhao062/pyod/blob/master/examples/save_load_model_example.py>.Addestramento rapido con SUOD <https://pyod.readthedocs.io/en/latest/fast_train.html>: Accelera addestramento e previsione con il framework SUOD [#Zhao2021SUOD]_. Vedi l'esempio <https://github.com/yzhao062/pyod/blob/master/examples/suod_example.py>.Soglia dei punteggi di outlier <https://pyod.readthedocs.io/en/latest/thresholding.html>: Approcci data-driven per impostare i livelli di contaminazione tramite PyThresh <https://github.com/KulikDM/pythresh>.Algoritmi implementati ^^^^^^^^^^^^^^^^^^^^^^
PyOD è organizzato in due gruppi funzionali: (i) Algoritmi di rilevamento, con sezioni dedicate per dati tabellari, serie temporali, grafi e audio (EmbeddingOD, all'interno della tabella tabellare, aggiunge il supporto per testo e immagini tramite encoder di modelli foundation); e (ii) Funzioni di utilità per generazione di dati, valutazione e orchestrazione del ciclo di vita.
(i-a) Algoritmi di rilevamento tabellari e multi-modali :
.. list-table:: :widths: 15 14 58 5 8 :header-rows: 1* - Tipo - Abbr - Algoritmo - Anno - Rif.
esempio <https://github.com/yzhao062/pyod/blob/development/examples/ecod_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/abod_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/abod_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/copod_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/mad_example.py>__)I metodi ensemble (IForest, INNE, DIF, FB, LSCP, LODA, SUOD, XGBOD) sono inclusi nella tabella precedente. Le funzioni di combinazione dei punteggi (media, massimizzazione, AOM, MOA, mediana, voto di maggioranza) sono in pyod.models.combination. Consulta la documentazione API <https://pyod.readthedocs.io/en/latest/pyod.models.tabular.html>__ per i dettagli.
(i-b) Rilevamento di anomalie nelle serie temporali :
Tutti i rilevatori per serie temporali usano la stessa API fit/predict/decision_function dei rilevatori tabulari, con un'eccezione: MatrixProfile è trasduttivo (solo training; usa decision_scores_ e labels_ dopo fit(), senza predict su nuovi campioni).
Formato di input: array numpy di forma (n_timestamps,) per serie univariate o (n_timestamps, n_channels) per multivariate. Ogni riga è un passo temporale; le colonne sono canali/caratteristiche. I Pandas DataFrame e le liste vengono convertiti automaticamente. Output: decision_scores_ di forma (n_timestamps,) con un punteggio di anomalia per passo temporale.
Rilevamento su serie temporali in 3 righe:
.. code-block:: python
from pyod.models.ts_kshape import KShape # or any TS detector
clf = KShape(window_size=20)
clf.fit(X_train) # shape (n_timestamps,) or (n_timestamps, n_channels)
scores = clf.decision_scores_ # per-timestamp anomaly scores
Classifiche degli algoritmi dal benchmark TSB-AD <https://github.com/TheDatumOrg/TSB-AD>__ [#Liu2024TSB]_ (NeurIPS 2024, 1070 dataset):
.. list-table:: :widths: 15 18 50 5 12 :header-rows: 1
esempio <https://github.com/yzhao062/pyod/blob/development/examples/ts_od_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/ts_matrix_profile_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/ts_spectral_residual_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/ts_kshape_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/ts_sand_example.py>__)(i-c) Rilevamento di anomalie su grafi (pip install pyod[graph]):
Tutti i rilevatori per grafi sono trasduttivi nella v1: usa decision_scores_ e labels_ dopo fit(). Nessun predict su nuovi campioni. Input: oggetto PyG Data con x (caratteristiche dei nodi) e edge_index (archi in formato COO). SCAN funziona senza caratteristiche.
Rilevamento su grafi in 3 righe (pip install pyod[graph]):
.. code-block:: python
from pyod.models.pyg_dominant import DOMINANT
clf = DOMINANT(hidden_dim=64, epochs=100)
clf.fit(data) # PyG Data object
scores = clf.decision_scores_ # per-node anomaly scores
Classifiche degli algoritmi dal benchmark BOND <https://arxiv.org/abs/2206.10071>__ [#Liu2022BOND]_ (NeurIPS 2022, 14 dataset):
.. list-table:: :widths: 18 18 45 5 14 :header-rows: 1
esempio dominant <https://github.com/yzhao062/pyod/blob/development/examples/pyg_dominant_example.py>__)esempio cola <https://github.com/yzhao062/pyod/blob/development/examples/pyg_cola_example.py>__)esempio conad <https://github.com/yzhao062/pyod/blob/development/examples/pyg_conad_example.py>__)esempio anomalydae <https://github.com/yzhao062/pyod/blob/development/examples/pyg_anomalydae_example.py>__)esempio guide <https://github.com/yzhao062/pyod/blob/development/examples/pyg_guide_example.py>__)(i-d) Rilevamento di anomalie audio (pip install pyod[audio]):
I clip audio usano la stessa API fit/decision_function. Sono disponibili due percorsi: un percorso leggero embed-then-detect (EmbeddingOD.for_audio() trasforma ogni clip in un vettore acustico artigianale a 74 dimensioni ed esegue qualsiasi rilevatore classico) e un rilevatore profondo dedicato (AudioAE, un autoencoder a ricostruzione log-mel). Gli input sono percorsi di file, array di forme d'onda o tuple (waveform, sample_rate). Output: un punteggio di anomalia per clip.
Rilevamento audio in 3 righe (pip install pyod[audio]):
.. code-block:: python
from pyod.models.embedding import EmbeddingOD
clf = EmbeddingOD.for_audio('balanced') # 74-dim handcrafted features + KNN
clf.fit(train_clips) # list of file paths or waveform arrays
scores = clf.decision_scores_ # per-clip anomaly scores
.. list-table:: :widths: 18 18 45 5 14 :header-rows: 1
for_audio(): caratteristiche MFCC a 74 dimensioni, cromatica e spettrali con qualsiasi rilevatore(ii) Funzioni di utilità:=================== ============================ ===================================================================================================================================================== Tipo Nome Funzione =================== ============================ ===================================================================================================================================================== Dati generate_data Generazione di dati sintetizzati; dati normali da gaussiana multivariata, outlier da distribuzione uniforme Dati generate_data_clusters Generazione di dati sintetizzati in cluster per pattern più complessi Valutazione evaluate_print Stampa ROC-AUC e Precision @ Rank n per un rilevatore Valutazione precision_n_scores Calcola Precision @ Rank n Utilità get_label_n Converte i punteggi grezzi di outlier in etichette binarie assegnando 1 ai primi n punteggi Statistica wpearsonr Calcola la correlazione di Pearson pesata di due campioni Codifica resolve_encoder Risolve un codificatore da un nome stringa, un'istanza BaseEncoder o un callable Codifica SentenceTransformerEncoder Codifica il testo tramite modelli sentence-transformers (es. MiniLM, mpnet) Codifica OpenAIEncoder Codifica il testo tramite API OpenAI Embeddings (text-embedding-3-small/large) Codifica HuggingFaceEncoder Codifica testo o immagini tramite transformers HuggingFace (BERT, DINOv2, CLIP) =================== ============================ =====================================================================================================================================================
Avvio rapido per il rilevamento di outlier ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
PyOD è stato ampiamente riconosciuto dalla comunità di machine learning grazie ad alcuni post in evidenza e tutorial.
Analytics Vidhya: Un fantastico tutorial per imparare il rilevamento degli outlier in Python usando la libreria PyOD <https://www.analyticsvidhya.com/blog/2019/02/outlier-detection-python-pyod/>__
KDnuggets: Visualizzazione intuitiva dei metodi di rilevamento degli outlier <https://www.kdnuggets.com/2019/02/outlier-detection-methods-cheat-sheet.html>, Una panoramica dei metodi di rilevamento degli outlier di PyOD <https://www.kdnuggets.com/2019/06/overview-outlier-detection-methods-pyod.html>
Towards Data Science: Rilevamento delle anomalie per principianti <https://towardsdatascience.com/anomaly-detection-for-dummies-15f148e559c1>__
"examples/knn_example.py" <https://github.com/yzhao062/pyod/blob/master/examples/knn_example.py>__
dimostra l'API di base per l'uso del rilevatore kNN. Si noti che l'API in tutti gli altri algoritmi è coerente/simile.
Istruzioni più dettagliate per eseguire gli esempi si trovano nella directory degli esempi <https://github.com/yzhao062/pyod/blob/master/examples>__.
#. Inizializza un rilevatore kNN, addestra il modello ed effettua la previsione.
.. code-block:: python
from pyod.models.knn import KNN # kNN detector
from pyod.utils.data import generate_data
contamination = 0.1 # percentage of outliers
n_train = 200 # number of training points
n_test = 100 # number of testing points
# generate sample data
X_train, X_test, y_train, y_test = generate_data(
n_train=n_train, n_test=n_test, n_features=2,
contamination=contamination, random_state=42)
# train kNN detector
clf_name = 'KNN'
clf = KNN()
clf.fit(X_train)
# get the prediction label and outlier scores of the training data
y_train_pred = clf.labels_ # binary labels (0: inliers, 1: outliers)
y_train_scores = clf.decision_scores_ # raw outlier scores
# get the prediction on the test data
y_test_pred = clf.predict(X_test) # outlier labels (0 or 1)
y_test_scores = clf.decision_function(X_test) # outlier scores
# it is possible to get the prediction confidence as well
y_test_pred, y_test_pred_confidence = clf.predict(X_test, return_confidence=True) # outlier labels (0 or 1) and confidence in the range of [0,1]
#. Valuta la previsione tramite ROC e Precision @ Rank n (p@n).
.. code-block:: python
from pyod.utils.data import evaluate_print
# evaluate and print the results
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)
#. Vedi un esempio di output e visualizzazione.
.. code-block:: python
On Training Data:
KNN ROC:0.9992, precision @ rank n:0.95
On Test Data:
KNN ROC:1.0, precision @ rank n:1.0
.. code-block:: python
from pyod.utils.example import visualize
visualize(clf_name, X_train, y_train, X_test, y_test, y_train_pred,
y_test_pred, show_figure=True, save_figure=False)
Ringraziamenti ^^^^^^^^^^^^^^^
Questo materiale si basa su un lavoro sostenuto dalla National Science Foundation
con Award No. 2346158 <https://www.nsf.gov/awardsearch/showAward?AWD_ID=2346158>_ per "NSF POSE: Phase II: OpenAD: An Integrated Open-Source Ecosystem for Anomaly Detection." Il premio indica l'Università dell'Illinois a Chicago come organizzazione capofila e l'Illinois Institute of Technology, la Lehigh University e la University of Southern California come organizzazioni beneficiarie secondarie.
Le opinioni, i risultati e le conclusioni o raccomandazioni espressi in questo materiale sono quelli degli autori e non riflettono necessariamente le opinioni della National Science Foundation.
Riferimenti ^^^^^^^^^
.. [#Aggarwal2015Outlier] Aggarwal, C.C., 2015. Outlier analysis. In Data mining (pp. 237-263). Springer, Cham.
.. [#Aggarwal2015Theoretical] Aggarwal, C.C. and Sathe, S., 2015. Theoretical foundations and algorithms for outlier ensembles.\ ACM SIGKDD Explorations Newsletter\ , 17(1), pp.24-47.
.. [#Aggarwal2017Outlier] Aggarwal, C.C. and Sathe, S., 2017. Outlier ensembles: An introduction. Springer.
.. [#Almardeny2020A] Almardeny, Y., Boujnah, N. and Cleary, F., 2020. A Novel Outlier Detection Method for Multivariate Data. IEEE Transactions on Knowledge and Data Engineering.
.. [#Angiulli2002Fast] Angiulli, F. and Pizzuti, C., 2002, August. Fast outlier detection in high dimensional spaces. In European Conference on Principles of Data Mining and Knowledge Discovery pp. 15-27.
.. [#Arning1996A] Arning, A., Agrawal, R. and Raghavan, P., 1996, August. A Linear Method for Deviation Detection in Large Databases. In KDD (Vol. 1141, No. 50, pp. 972-981).
.. [#Bandaragoda2018Isolation] Bandaragoda, T. R., Ting, K. M., Albrecht, D., Liu, F. T., Zhu, Y., and Wells, J. R., 2018, Isolation-based anomaly detection using nearest-neighbor ensembles. Computational Intelligence\ , 34(4), pp. 968-998.
.. [#Breunig2000LOF] Breunig, M.M., Kriegel, H.P., Ng, R.T. and Sander, J., 2000, May. LOF: identifying density-based local outliers. ACM Sigmod Record\ , 29(2), pp. 93-104.
.. [#Burgess2018Understanding] Burgess, Christopher P., et al. "Understanding disentangling in beta-VAE." arXiv preprint arXiv:1804.03599 (2018).
.. [#Campello2013Density] Campello, R.J.G.B., Moulavi, D. and Sander, J., 2013, April. Density-based clustering based on hierarchical density estimates. In Pacific-Asia Conference on Knowledge Discovery and Data Mining (pp. 160-172). Springer.
.. [#Cook1977Detection] Cook, R.D., 1977. Detection of influential observation in linear regression. Technometrics, 19(1), pp.15-18.
.. [#Chen2024PyOD] Chen, S., Qian, Z., Siu, W., Hu, X., Li, J., Li, S., Qin, Y., Yang, T., Xiao, Z., Ye, W. and Zhang, Y., 2024. PyOD 2: A Python Library for Outlier Detection with LLM-powered Model Selection. arXiv preprint arXiv:2412.12154.
.. [#Fang2001Wrap] Fang, K.T. and Ma, C.X., 2001. Wrap-around L2-discrepancy of random sampling, Latin hypercube and uniform designs. Journal of complexity, 17(4), pp.608-624.
.. [#Goldstein2012Histogram] Goldstein, M. and Dengel, A., 2012. Histogram-based outlier score (hbos): A fast unsupervised anomaly detection algorithm. In KI-2012: Poster and Demo Track\ , pp.59-63.
.. [#Goodge2022Lunar] Goodge, A., Hooi, B., Ng, S.K. and Ng, W.S., 2022, June. Lunar: Unifying local outlier detection methods via graph neural networks. In Proceedings of the AAAI Conference on Artificial Intelligence.
.. [#Gopalan2019PIDForest] Gopalan, P., Sharan, V. and Wieder, U., 2019. PIDForest: Anomaly Detection via Partial Identification. In Advances in Neural Information Processing Systems, pp. 15783-15793.
.. [#Han2022ADBench] Han, S., Hu, X., Huang, H., Jiang, M. and Zhao, Y., 2022. ADBench: Anomaly Detection Benchmark. arXiv preprint arXiv:2206.09426.
.. [#Hardin2004Outlier] Hardin, J. and Rocke, D.M., 2004. Outlier detection in the multiple cluster setting using the minimum covariance determinant estimator. Computational Statistics & Data Analysis\ , 44(4), pp.625-638.
.. [#He2003Discovering] He, Z., Xu, X. and Deng, S., 2003. Discovering cluster-based local outliers. Pattern Recognition Letters\ , 24(9-10), pp.1641-1650.
.. [#Hoffmann2007Kernel] Hoffmann, H., 2007. Kernel PCA for novelty detection. Pattern recognition, 40(3), pp.863-874.
.. [#Iglewicz1993How] Iglewicz, B. and Hoaglin, D.C., 1993. How to detect and handle outliers (Vol. 16). Asq Press.
.. [#Janssens2012Stochastic] Janssens, J.H.M., Huszár, F., Postma, E.O. and van den Herik, H.J., 2012. Stochastic outlier selection. Technical report TiCC TR 2012-001, Tilburg University, Tilburg Center for Cognition and Communication, Tilburg, The Netherlands.
.. [#Kingma2013Auto] Kingma, D.P. and Welling, M., 2013. Auto-encoding variational bayes. arXiv preprint arXiv:1312.6114.
.. [#Kriegel2008Angle] Kriegel, H.P. and Zimek, A., 2008, August. Angle-based outlier detection in high-dimensional data. In KDD '08\ , pp. 444-452. ACM.
.. [#Kriegel2009Outlier] Kriegel, H.P., Kröger, P., Schubert, E. and Zimek, A., 2009, April. Outlier detection in axis-parallel subspaces of high dimensional data. In Pacific-Asia Conference on Knowledge Discovery and Data Mining\ , pp. 831-838. Springer, Berlin, Heidelberg.
.. [#Latecki2007Outlier] Latecki, L.J., Lazarevic, A. and Pokrajac, D., 2007, July. Outlier detection with kernel density functions. In International Workshop on Machine Learning and Data Mining in Pattern Recognition (pp. 61-75). Springer, Berlin, Heidelberg.
.. [#Lazarevic2005Feature] Lazarevic, A. and Kumar, V., 2005, August. Feature bagging for outlier detection. In KDD '05. 2005.
.. [#Li2024NLPADBench] Li, Y., Li, J., Xiao, Z., Yang, T., Nian, Y., Hu, X. and Zhao, Y., 2025. NLP-ADBench: NLP Anomaly Detection Benchmark. In Findings of the Association for Computational Linguistics: EMNLP 2025.
.. [#Li2019MADGAN] Li, D., Chen, D., Jin, B., Shi, L., Goh, J. and Ng, S.K., 2019, September. MAD-GAN: Multivariate anomaly detection for time series data with generative adversarial networks. In International Conference on Artificial Neural Networks (pp. 703-716). Springer, Cham.
.. [#Li2020COPOD] Li, Z., Zhao, Y., Botta, N., Ionescu, C. and Hu, X. COPOD: Copula-Based Outlier Detection. IEEE International Conference on Data Mining (ICDM), 2020.
.. [#Li2021ECOD] Li, Z., Zhao, Y., Hu, X., Botta, N., Ionescu, C. and Chen, H. G. ECOD: Unsupervised Outlier Detection Using Empirical Cumulative Distribution Functions. IEEE Transactions on Knowledge and Data Engineering (TKDE), 2022.
.. [#Liu2008Isolation] Liu, F.T., Ting, K.M. and Zhou, Z.H., 2008, December. Isolation forest. In International Conference on Data Mining\ , pp. 413-422. IEEE.
.. [#Liu2019Generative] Liu, Y., Li, Z., Zhou, C., Jiang, Y., Sun, J., Wang, M. and He, X., 2019. Generative adversarial active learning for unsupervised outlier detection. IEEE Transactions on Knowledge and Data Engineering.
.. [#Nguyen2019scalable] Nguyen, M.N. and Vien, N.A., 2019. Scalable and interpretable one-class svms with deep learning and random fourier features. In Machine Learning and Knowledge Discovery in Databases: European Conference, ECML PKDD, 2018.
.. [#Pang2019Deep] Pang, Guansong, Chunhua Shen, and Anton Van Den Hengel. "Deep anomaly detection with deviation networks." In KDD, pp. 353-362. 2019.
.. [#Papadimitriou2003LOCI] Papadimitriou, S., Kitagawa, H., Gibbons, P.B. and Faloutsos, C., 2003, March. LOCI: Fast outlier detection using the local correlation integral. In ICDE '03, pp. 315-326. IEEE.
.. [#Pevny2016Loda] Pevný, T., 2016. Loda: Lightweight on-line detector of anomalies. Machine Learning, 102(2), pp.275-304.
.. [#Perini2020Quantifying] Perini, L., Vercruyssen, V., Davis, J. Quantifying the confidence of anomaly detectors in their example-wise predictions. In Joint European Conference on Machine Learning and Knowledge Discovery in Databases (ECML-PKDD), 2020.
.. [#Perini2023Rejection] Perini, L., Davis, J. Unsupervised anomaly detection with rejection. In Proceedings of the Thirty-Seven Conference on Neural Information Processing Systems (NeurIPS), 2023.
.. [#Ramaswamy2000Efficient] Ramaswamy, S., Rastogi, R. and Shim, K., 2000, May. Efficient algorithms for mining outliers from large data sets. ACM Sigmod Record\ , 29(2), pp. 427-438.
.. [#Rousseeuw1999A] Rousseeuw, P.J. and Driessen, K.V., 1999. A fast algorithm for the minimum covariance determinant estimator. Technometrics\ , 41(3), pp.212-223.
.. [#Ruff2018Deep] Ruff, L., Vandermeulen, R., Goernitz, N., Deecke, L., Siddiqui, S.A., Binder, A., Müller, E. and Kloft, M., 2018, July. Deep one-class classification. In International conference on machine learning (pp. 4393-4402). PMLR.
.. [#Schlegl2017Unsupervised] Schlegl, T., Seeböck, P., Waldstein, S.M., Schmidt-Erfurth, U. and Langs, G., 2017, June. Unsupervised anomaly detection with generative adversarial networks to guide marker discovery. In International conference on information processing in medical imaging (pp. 146-157). Springer, Cham.
.. [#Scholkopf2001Estimating] Scholkopf, B., Platt, J.C., Shawe-Taylor, J., Smola, A.J. and Williamson, R.C., 2001. Estimating the support of a high-dimensional distribution. Neural Computation, 13(7), pp.1443-1471.
.. [#Shyu2003A] Shyu, M.L., Chen, S.C., Sarinnapakorn, K. and Chang, L., 2003. A novel anomaly detection scheme based on principal component classifier. MIAMI UNIV CORAL GABLES FL DEPT OF ELECTRICAL AND COMPUTER ENGINEERING.
.. [#Sugiyama2013Rapid] Sugiyama, M. and Borgwardt, K., 2013. Rapid distance-based outlier detection via sampling. Advances in neural information processing systems, 26.
.. [#Tang2002Enhancing] Tang, J., Chen, Z., Fu, A.W.C. and Cheung, D.W., 2002, May. Enhancing effectiveness of outlier detections for low density patterns. In Pacific-Asia Conference on Knowledge Discovery and Data Mining, pp. 535-548. Springer, Berlin, Heidelberg.
.. [#Wang2020adVAE] Wang, X., Du, Y., Lin, S., Cui, P., Shen, Y. and Yang, Y., 2019. adVAE: A self-adversarial variational autoencoder with Gaussian anomaly prior knowledge for anomaly detection. Knowledge-Based Systems.
.. [#Xu2023Deep] Xu, H., Pang, G., Wang, Y., Wang, Y., 2023. Deep isolation forest for anomaly detection. IEEE Transactions on Knowledge and Data Engineering.
.. [#Yang2024ad] Yang, T., Nian, Y., Li, S., Xu, R., Li, Y., Li, J., Xiao, Z., Hu, X., Rossi, R., Ding, K. and Hu, X., 2024. AD-LLM: Benchmarking Large Language Models for Anomaly Detection. arXiv preprint arXiv:2412.11142.
.. [#You2017Provable] You, C., Robinson, D.P. and Vidal, R., 2017. Provable self-representation based outlier detection in a union of subspaces. In Proceedings of the IEEE conference on computer vision and pattern recognition.
.. [#Zenati2018Adversarially] Zenati, H., Romain, M., Foo, C.S., Lecouat, B. and Chandrasekhar, V., 2018, November. Adversarially learned anomaly detection. In 2018 IEEE International conference on data mining (ICDM) (pp. 727-736). IEEE.
.. [#Zhao2018XGBOD] Zhao, Y. and Hryniewicki, M.K. XGBOD: Improving Supervised Outlier Detection with Unsupervised Representation Learning. IEEE International Joint Conference on Neural Networks\ , 2018.
.. [#Zhao2019LSCP] Zhao, Y., Nasrullah, Z., Hryniewicki, M.K. and Li, Z., 2019, May. LSCP: Locally selective combination in parallel outlier ensembles. In Proceedings of the 2019 SIAM International Conference on Data Mining (SDM), pp. 585-593. Society for Industrial and Applied Mathematics.
.. [#Zhao2021SUOD] Zhao, Y., Hu, X., Cheng, C., Wang, C., Wan, C., Wang, W., Yang, J., Bai, H., Li, Z., Xiao, C., Wang, Y., Qiao, Z., Sun, J. and Akoglu, L. (2021). SUOD: Accelerating Large-scale Unsupervised Heterogeneous Outlier Detection. Conference on Machine Learning and Systems (MLSys).
.. [#Boniol2021SAND] Boniol, P., Paparrizos, J., Palpanas, T. and Franklin, M.J., 2021. SAND: Streaming Subsequence Anomaly Detection. Proceedings of the VLDB Endowment, 14(10), pp.1717-1729.
.. [#Malhotra2015Long] Malhotra, P., Vig, L., Shroff, G. and Agarwal, P., 2015. Long Short Term Memory Networks for Anomaly Detection in Time Series. In European Symposium on Artificial Neural Networks (ESANN).
.. [#Paparrizos2015KShape] Paparrizos, J. and Gravano, L., 2015. k-Shape: Efficient and Accurate Clustering of Time Series. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data, pp.1855-1870.
.. [#Ren2019Time] Ren, H., Xu, B., Wang, Y., Yi, C., Huang, C., Kou, X., Xing, T., Yang, M., Tong, J. and Zhang, Q., 2019. Time-Series Anomaly Detection Service at Microsoft. In Proceedings of the 25th ACM SIGKDD International Conference on Knowledge Discovery & Data Mining, pp.3009-3017.
.. [#Xu2022Anomaly] Xu, J., Wu, H., Wang, J. and Long, M., 2022. Anomaly Transformer: Time Series Anomaly Detection with Association Discrepancy. In International Conference on Learning Representations (ICLR).
.. [#Yeh2016Matrix] Yeh, C.C.M., Zhu, Y., Ulanova, L., Begum, N., Ding, Y., Dau, H.A., Silva, D.F., Mueen, A. and Keogh, E., 2016. Matrix Profile I: All Pairs Similarity Joins for Time Series Subsequences. In 2016 IEEE 16th International Conference on Data Mining (ICDM), pp.1317-1322.
.. [#Ding2019DOMINANT] Ding, K., Li, J., Bhanushali, R. and Liu, H., 2019. Deep Anomaly Detection on Attributed Networks. In Proceedings of the 2019 SIAM International Conference on Data Mining, pp.594-602. SIAM.
.. [#Liu2022CoLA] Liu, Y., Li, Z., Pan, S., Gool, T., Xiang, T. and Gong, B., 2022. Anomaly Detection on Attributed Networks via Contrastive Self-Supervised Learning. In Proceedings of the ACM Web Conference 2022, pp.2137-2147.
.. [#Xu2022CONAD] Xu, Z., Huang, X., Zhao, Y., Dong, Y. and Li, J., 2022. Contrastive Attributed Network Anomaly Detection with Data Augmentation. In Pacific-Asia Conference on Knowledge Discovery and Data Mining, pp.444-457. Springer.
.. [#Fan2020AnomalyDAE] Fan, H., Zhang, F. and Li, Z., 2020. AnomalyDAE: Dual Autoencoder for Anomaly Detection on Attributed Networks. In Proceedings of the 29th ACM International Conference on Information and Knowledge Management, pp.747-756.
.. [#Yuan2021GUIDE] Yuan, X., Zhou, N., Yu, S., Huang, H., Chen, Z. and Xia, F., 2021. Higher-Order Structure Based Anomaly Detection on Attributed Networks. In 2021 IEEE International Conference on Big Data, pp.2691-2700. IEEE... [#Li2017Radar] Li, J., Dani, H., Hu, X. e Liu, H., 2017. Radar: analisi dei residui per il rilevamento di anomalie in reti con attributi. In Proceedings of the Twenty-Sixth International Joint Conference on Artificial Intelligence, pp.2152-2158.
.. [#Peng2018ANOMALOUS] Peng, Z., Luo, M., Li, J., Liu, H. e Zheng, Q., 2018. ANOMALOUS: un approccio di modellazione congiunta per il rilevamento di anomalie su reti con attributi. In Proceedings of the Twenty-Seventh International Joint Conference on Artificial Intelligence, pp.3529-3535.
.. [#Xu2007SCAN] Xu, X., Yuruk, N., Feng, Z. e Schweiger, T.A.J., 2007. SCAN: un algoritmo di clustering strutturale per reti. In Proceedings of the 13th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp.824-833.
.. [#Liu2024TSB] Liu, Q., Boniol, P., Palpanas, T. e Paparrizos, J., 2024. TSB-AD: verso un benchmark affidabile per il rilevamento di anomalie nelle serie temporali. In Advances in Neural Information Processing Systems (NeurIPS).
.. [#Liu2022BOND] Liu, K., Dou, Y., Zhao, Y., Ding, X., Hu, X., Zhang, R., Ding, K., Chen, C., Peng, H., Shu, K., Sun, L., Li, J., Chen, G.H., Jia, Z. e Yu, P.S., 2022. BOND: benchmarking del rilevamento non supervisionato di nodi anomali su grafi statici con attributi. In Advances in Neural Information Processing Systems (NeurIPS).
investigateiterateTalk Python To Me #497 <https://talkpython.fm/episodes/show/497/outlier-detection-with-python>Real Python Podcast #208 <https://realpython.com/podcasts/rpp/208/>aidoczh.com <https://www.aidoczh.com>esempio <https://github.com/yzhao062/pyod/blob/development/examples/sos_example.py>esempio <https://github.com/yzhao062/pyod/blob/development/examples/qmcd_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/kde_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/sampling_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/gmm_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/pca_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/kpca_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/mcd_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/cd_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/ocsvm_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/lmdd_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/lof_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/cof_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/cof_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/cblof_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/loci_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/hbos_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/hdbscan_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/knn_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/sod_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/rod_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/iforest_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/inne_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/dif_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/feature_bagging_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/lscp_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/xgbod_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/loda_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/suod_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/auto_encoder_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/vae_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/vae_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/so_gaal_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/mo_gaal_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/deepsvdd_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/alad_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/ae1svm_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/devnet_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/rgraph_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/lunar_example.py>__)esempio <https://github.com/yzhao062/pyod/blob/development/examples/embedding_od_example.py>__)esempio radar <https://github.com/yzhao062/pyod/blob/development/examples/pyg_radar_example.py>__)esempio anomalous <https://github.com/yzhao062/pyod/blob/development/examples/pyg_anomalous_example.py>__)esempio scan <https://github.com/yzhao062/pyod/blob/development/examples/pyg_scan_example.py>__)