
Bibliothèque Python évolutive pour l'analyse de séries temporelles via les profils matriciels, permettant la découverte de motifs, la détection d'anomalies, la segmentation sémantique et l'extraction de motifs en continu.
|Version PyPI| |Version Conda Forge| |Téléchargements PyPI| |Licence| |Statut des tests| |Couverture du code|
|Statut RTD| |Binder| |JOSS| |NumFOCUS|
.. |Version PyPI| image:: https://img.shields.io/pypi/v/stumpy.svg :target: https://pypi.org/project/stumpy/ :alt: Version PyPI .. |Version Conda Forge| image:: https://anaconda.org/conda-forge/stumpy/badges/version.svg :target: https://anaconda.org/conda-forge/stumpy :alt: Version Conda-Forge .. |Téléchargements PyPI| image:: https://static.pepy.tech/badge/stumpy/month :target: https://pepy.tech/project/stumpy :alt: Téléchargements PyPI .. |Licence| image:: https://img.shields.io/pypi/l/stumpy.svg :target: https://github.com/stumpy-dev/stumpy/blob/main/LICENSE.txt :alt: Licence .. |Statut des tests| image:: https://github.com/stumpy-dev/stumpy/workflows/Tests/badge.svg :target: https://github.com/stumpy-dev/stumpy/actions?query=workflow%3ATests+branch%3Amain :alt: Statut des tests .. |Couverture du code| image:: https://img.shields.io/badge/Coverage-100%25-green :alt: Couverture du code .. |Statut RTD| image:: https://readthedocs.org/projects/stumpy/badge/?version=latest :target: https://stumpy.readthedocs.io/ :alt: Statut ReadTheDocs .. |Binder| image:: https://mybinder.org/badge_logo.svg :target: https://mybinder.org/v2/gh/stumpy-dev/stumpy/main?filepath=notebooks :alt: Binder .. |JOSS| image:: http://joss.theoj.org/papers/10.21105/joss.01504/status.svg :target: https://doi.org/10.21105/joss.01504 :alt: JOSS .. |DOI| image:: https://zenodo.org/badge/184809315.svg :target: https://zenodo.org/badge/latestdoi/184809315 :alt: DOI .. |NumFOCUS| image:: https://img.shields.io/badge/NumFOCUS-Affiliated%20Project-orange.svg?style=flat&colorA=E1523D&colorB=007D8A :target: https://numfocus.org/sponsored-projects/affiliated-projects :alt: Projet affilié à NumFOCUS .. |Twitter| image:: https://img.shields.io/twitter/follow/stumpy_dev.svg?style=social :target: https://twitter.com/stumpy_dev :alt: Twitter
|
.. image:: https://raw.githubusercontent.com/stumpy-dev/stumpy/main/docs/images/stumpy_logo_small.png :target: https://github.com/stumpy-dev/stumpy :alt: Logo STUMPY
STUMPY est une bibliothèque Python puissante et évolutive qui calcule efficacement ce que l'on appelle le matrix profile <https://stumpy.readthedocs.io/en/latest/Tutorial_The_Matrix_Profile.html>__, ce qui est simplement une façon académique de dire « pour chaque sous-séquence (verte) de votre série temporelle, identifiez automatiquement son plus proche voisin (gris) correspondant » :
.. image:: https://github.com/stumpy-dev/stumpy/blob/main/docs/images/stumpy_demo.gif?raw=true :alt: GIF animé STUMPY
Ce qui est important, c'est qu'une fois que vous avez calculé votre matrix profile (panneau central ci-dessus), il peut ensuite être utilisé pour une variété de tâches d'exploration de données de séries temporelles telles que :
et plus encore ... <https://www.cs.ucr.edu/~eamonn/100_Time_Series_Data_Mining_Questions__with_Answers.pdf>__Que vous soyez un universitaire, un data scientist, un développeur de logiciels ou un passionné de séries temporelles, STUMPY est simple à installer et notre objectif est de vous permettre d'atteindre vos analyses de séries temporelles plus rapidement. Consultez la documentation <https://stumpy.readthedocs.io/en/latest/>__ pour plus d'informations.
Veuillez consulter notre documentation de l'API <https://stumpy.readthedocs.io/en/latest/api.html>__ pour une liste complète des fonctions disponibles et consultez nos tutoriels <https://stumpy.readthedocs.io/en/latest/tutorials.html>__ informatifs pour des cas d'utilisation plus complets. Ci-dessous, vous trouverez des extraits de code qui démontrent rapidement comment utiliser STUMPY.
Utilisation typique (données de séries temporelles à 1 dimension) avec STUMP <https://stumpy.readthedocs.io/en/latest/api.html#stumpy.stump>__ :
.. code:: python
import stumpy
import numpy as np
if __name__ == "__main__":
your_time_series = np.random.rand(10000)
window_size = 50 # Approximately, how many data points might be found in a pattern
matrix_profile = stumpy.stump(your_time_series, m=window_size)
Utilisation distribuée pour des données de séries temporelles à 1 dimension avec Dask Distributed via STUMPED <https://stumpy.readthedocs.io/en/latest/api.html#stumpy.stumped>__ :
.. code:: python
import stumpy
import numpy as np
from dask.distributed import Client
if __name__ == "__main__":
with Client() as dask_client:
your_time_series = np.random.rand(10000)
window_size = 50 # Approximately, how many data points might be found in a pattern
matrix_profile = stumpy.stumped(dask_client, your_time_series, m=window_size)
Utilisation GPU pour des données de séries temporelles à 1 dimension avec GPU-STUMP <https://stumpy.readthedocs.io/en/latest/api.html#stumpy.gpu_stump>__ :
.. code:: python
import stumpy
import numpy as np
from numba import cuda
if __name__ == "__main__":
your_time_series = np.random.rand(10000)
window_size = 50 # Approximately, how many data points might be found in a pattern
all_gpu_devices = [device.id for device in cuda.list_devices()] # Get a list of all available GPU devices
matrix_profile = stumpy.gpu_stump(your_time_series, m=window_size, device_id=all_gpu_devices)
Données de séries temporelles multidimensionnelles avec MSTUMP <https://stumpy.readthedocs.io/en/latest/api.html#stumpy.mstump>__ :
.. code:: python
import stumpy
import numpy as np
if __name__ == "__main__":
your_time_series = np.random.rand(3, 1000) # Each row represents data from a different dimension while each column represents data from the same dimension
window_size = 50 # Approximately, how many data points might be found in a pattern
matrix_profile, matrix_profile_indices = stumpy.mstump(your_time_series, m=window_size)
Analyse distribuée de données de séries temporelles multidimensionnelles avec Dask Distributed MSTUMPED <https://stumpy.readthedocs.io/en/latest/api.html#stumpy.mstumped>__ :
.. code:: python
import stumpy
import numpy as np
from dask.distributed import Client
if __name__ == "__main__":
with Client() as dask_client:
your_time_series = np.random.rand(3, 1000) # Each row represents data from a different dimension while each column represents data from the same dimension
window_size = 50 # Approximately, how many data points might be found in a pattern
matrix_profile, matrix_profile_indices = stumpy.mstumped(dask_client, your_time_series, m=window_size)
Chaînes de séries temporelles avec Anchored Time Series Chains (ATSC) <https://stumpy.readthedocs.io/en/latest/api.html#stumpy.atsc>__ :
.. code:: python
import stumpy
import numpy as np
if __name__ == "__main__":
your_time_series = np.random.rand(10000)
window_size = 50 # Approximately, how many data points might be found in a pattern
matrix_profile = stumpy.stump(your_time_series, m=window_size)