{"id":13415324,"url":"https://github.com/selimfirat/pysad","last_synced_at":"2026-01-02T13:05:56.614Z","repository":{"id":44846968,"uuid":"269500695","full_name":"selimfirat/pysad","owner":"selimfirat","description":"Streaming Anomaly Detection Framework in Python (Outlier Detection for Streaming Data)","archived":false,"fork":false,"pushed_at":"2023-10-12T21:34:53.000Z","size":410,"stargazers_count":243,"open_issues_count":3,"forks_count":22,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-12-06T19:33:21.274Z","etag":null,"topics":["anomaly","anomaly-detection","fraud-detection","incremental-learning","intrusion-detection","machine-learning","outlier-detection","outliers","python","real-time","streaming-data","unsupervised-learning"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/selimfirat.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGES.txt","contributing":"docs/contributing.rst","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-05T01:17:44.000Z","updated_at":"2024-12-02T22:47:23.000Z","dependencies_parsed_at":"2024-06-21T15:34:13.018Z","dependency_job_id":"33577338-1ec5-42fc-ae19-165ba18e5ddc","html_url":"https://github.com/selimfirat/pysad","commit_stats":{"total_commits":214,"total_committers":1,"mean_commits":214.0,"dds":0.0,"last_synced_commit":"eaa3b7fba14011b1674f91f8958f86a37b6b752c"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selimfirat%2Fpysad","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selimfirat%2Fpysad/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selimfirat%2Fpysad/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/selimfirat%2Fpysad/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/selimfirat","download_url":"https://codeload.github.com/selimfirat/pysad/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243658057,"owners_count":20326459,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anomaly","anomaly-detection","fraud-detection","incremental-learning","intrusion-detection","machine-learning","outlier-detection","outliers","python","real-time","streaming-data","unsupervised-learning"],"created_at":"2024-07-30T21:00:47.153Z","updated_at":"2026-01-02T13:05:56.608Z","avatar_url":"https://github.com/selimfirat.png","language":"Python","funding_links":[],"categories":["Anomaly Detection Software","Python","Industrial Materials","异常检测包"],"sub_categories":["Tools"],"readme":".. image:: https://github.com/selimfirat/pysad/raw/master/docs/logo.png\n    :align: center\n\nPython Streaming Anomaly Detection (PySAD)\n==========================================\n\n.. image:: https://img.shields.io/pypi/v/pysad\n    :target: https://pypi.org/project/pysad/\n    :alt: PyPI\n\n.. image:: https://img.shields.io/github/v/release/selimfirat/pysad\n   :target: https://github.com/selimfirat/pysad/releases\n   :alt: GitHub release (latest by date)\n\n.. image:: https://readthedocs.org/projects/pysad/badge/?version=latest\n   :target: https://pysad.readthedocs.io/en/latest/?badge=latest\n   :alt: Documentation status\n\n.. image:: https://badges.gitter.im/selimfirat-pysad/community.svg\n   :target: https://gitter.im/selimfirat-pysad/community?utm_source=share-link\u0026utm_medium=link\u0026utm_campaign=share-link\n   :alt: Gitter\n\n.. image:: https://dev.azure.com/selimfirat/pysad/_apis/build/status/selimfirat.pysad?branchName=master\n   :target: https://dev.azure.com/selimfirat/pysad/_build/latest?definitionId=2\u0026branchName=master\n   :alt: Azure Pipelines Build Status\n\n.. image:: https://travis-ci.org/selimfirat/pysad.svg?branch=master\n   :target: https://travis-ci.org/selimfirat/pysad\n   :alt: Travis CI Build Status\n\n.. image:: https://ci.appveyor.com/api/projects/status/ceghuv517ghqgjce/branch/master?svg=true\n   :target: https://ci.appveyor.com/project/selimfirat/pysad/branch/master\n   :alt: Appveyor Build status\n\n.. image:: https://circleci.com/gh/selimfirat/pysad.svg?style=svg\n   :target: https://circleci.com/gh/selimfirat/pysad\n   :alt: Circle CI\n\n.. image:: https://coveralls.io/repos/github/selimfirat/pysad/badge.svg?branch=master\n   :target: https://coveralls.io/github/selimfirat/pysad?branch=master\n   :alt: Coverage Status\n\n.. image:: https://img.shields.io/pypi/pyversions/pysad\n   :target: https://github.com/selimfirat/pysad/\n   :alt: PyPI - Python Version\n\n.. image:: https://img.shields.io/badge/platforms-linux--64%2Cosx--64%2Cwin--64-green\n   :target: https://github.com/selimfirat/pysad/\n   :alt: Supported Platforms\n\n.. image:: https://img.shields.io/github/license/selimfirat/pysad.svg\n   :target: https://github.com/selimfirat/pysad/blob/master/LICENSE\n   :alt: License\n\n\n**PySAD** is an open-source python framework for anomaly detection on streaming multivariate data.\n\n`Documentation \u003chttps://pysad.readthedocs.io/en/latest/\u003e`__\n\nFeatures\n========\n\nOnline Anomaly Detection\n^^^^^^^^^^^^^^^^^^^^^^^^\n\n`PySAD` provides methods for online/sequential anomaly detection, i.e. anomaly detection on streaming data, where model updates itself as a new instance arrives.\n\n\nResource-Efficient\n^^^^^^^^^^^^^^^^^^\n\nStreaming methods efficiently handle the limitied memory and processing time requirements of the data streams so that they can be used in near real-time. The methods can only store an instance or a small window of recent instances.\n\n\nComplete\n^^^^^^^^\n\n`PySAD` contains stream simulators, evaluators, preprocessors, statistic trackers, postprocessors, probability calibrators and more. In addition to streaming models, `PySAD` also provides integrations for batch anomaly detectors of the `PyOD \u003chttps://github.com/yzhao062/pyod/\u003e`_ so that they can be used in the streaming setting.\n\n\nComprehensive\n^^^^^^^^^^^^^\n\n`PySAD` serves models that are specifically designed for both univariate and multivariate data. Furthermore, one can experiment via `PySAD` in supervised, semi-supervised and unsupervised setting.\n\n\nUser Friendly\n^^^^^^^^^^^^^\n\nUsers with any experience level can easily use `PySAD`. One can easily design experiments and combine the tools in the framework. Moreover, the existing methods in `PySAD` are easy to extend.\n\n\nFree and Open Source Software (FOSS)\n^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n`PySAD` is distributed under `BSD License 2.0 \u003chttps://github.com/selimfirat/pysad/blob/master/LICENSE\u003e`_ and favors FOSS principles.\n\nInstallation\n============\n\n\nThe PySAD framework can be installed via:\n\n\n.. code-block:: bash\n\n    pip install -U pysad\n\n\nAlternatively, you can install the library directly using the source code in Github repository by:\n\n\n.. code-block:: bash\n\n    git clone https://github.com/selimfirat/pysad.git\n    cd pysad\n    pip install .\n\n\n**Required Dependencies:**\n\n\n* Python 3.10+\n* numpy==2.0.2\n* scikit-learn==1.5.2\n* scipy==1.13.1\n* pyod==2.0.5\n* combo==0.1.3\n\n**Optional Dependencies:**\n\n\n* rrcf==0.4.3 (Only required for  `pysad.models.robust_random_cut_forest.RobustRandomCutForest`)\n* PyNomaly==0.3.3 (Only required for  `pysad.models.loop.StreamLocalOutlierProbability`)\n* mmh3==2.5.1 (Only required for  `pysad.models.xstream.xStream`)\n* pandas==2.2.3 (Only required for  `pysad.utils.pandas_streamer.PandasStreamer`)\n* jax\u003e=0.6.1 (Only required for  `pysad.models.inqmad.Inqmad`; required for NumPy 2.0+ compatibility)\n* jaxlib\u003e=0.6.1 (Only required for  `pysad.models.inqmad.Inqmad`; required for NumPy 2.0+ compatibility)\n\nExamples\n========\n\nQuick Start\n^^^^^^^^^^^^^^^^^^\n\nHere's a simple example showing how to use PySAD for anomaly detection on streaming data:\n\n.. code-block:: python\n\n    # Import modules.\n    from pysad.evaluation import AUROCMetric\n    from pysad.models import LODA\n    from pysad.utils import Data\n\n\n    model = LODA()  # Init model\n    metric = AUROCMetric()  # Init area under receiver-operating- characteristics curve metric\n    streaming_data = Data().get_iterator(\"arrhythmia.mat\")  # Get data streamer.\n\n    for x, y_true in streaming_data:  # Stream data.\n        anomaly_score = model.fit_score_partial(x)  # Fit the instance to model and score the instance.\n\n        metric.update(y_true, anomaly_score)  # Update the AUROC metric.\n\n    # Output the resulting AUROCMetric.\n    print(f\"Area under ROC metric is {metric.get()}.\")\n\nQuick Links\n============\n\n* `Github Repository \u003chttps://github.com/selimfirat/pysad/\u003e`_\n\n* `Documentation \u003chttp://pysad.readthedocs.io/\u003e`__\n\n* `PyPI Package \u003chttps://pypi.org/project/pysad\u003e`_\n\n* `Travis CI \u003chttps://travis-ci.com/github/selimfirat/pysad\u003e`_\n\n* `Azure Pipelines \u003chttps://dev.azure.com/selimfirat/pysad/\u003e`_\n\n* `Circle CI \u003chttps://circleci.com/gh/selimfirat/pysad/\u003e`_\n\n* `Appveyor \u003chttps://ci.appveyor.com/project/selimfirat/pysad/branch/master\u003e`_\n\n* `Coveralls \u003chttps://coveralls.io/github/selimfirat/pysad?branch=master\u003e`_\n\n* `License \u003chttps://github.com/selimfirat/pysad/blob/master/LICENSE\u003e`_\n\n\n\nContributors\n============\n\n.. image:: https://contrib.rocks/image?repo=selimfirat/pysad\n    :target: https://github.com/selimfirat/pysad/graphs/contributors\n    :alt: Contributors\n    :align: center\n\nWe thank all our contributors for their valuable input and efforts to make PySAD better!\n\nVersioning\n==========\n\n`Semantic versioning \u003chttp://semver.org/\u003e`_ is used for this project.\n\nLicense\n=======\n\nThis project is licensed under the `BSD License 2.0 \u003chttps://github.com/selimfirat/pysad/blob/master/LICENSE\u003e`_.\n\n\nCiting PySAD\n============\nIf you use PySAD for a scientific publication, please cite the following paper:\n\n.. code-block::\n\n    @article{pysad,\n      title={PySAD: A Streaming Anomaly Detection Framework in Python},\n      author={Yilmaz, Selim F and Kozat, Suleyman S},\n      journal={arXiv preprint arXiv:2009.02572},\n      year={2020}\n    }","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselimfirat%2Fpysad","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fselimfirat%2Fpysad","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fselimfirat%2Fpysad/lists"}