
مكتبة بايثون قابلة للتوسع لتحليل السلاسل الزمنية عبر ملفات تعريف المصفوفات (matrix profiles)، مما يتيح اكتشاف الأنماط المتكررة، وكشف الشذوذ، والتجزئة الدلالية، والتنقيب عن الأنماط المتدفقة.
|إصدار PyPI| |إصدار Conda Forge| |تنزيلات PyPI| |الترخيص| |حالة الاختبار| |تغطية الكود|
|حالة RTD| |Binder| |JOSS| |NumFOCUS|
.. |إصدار PyPI| image:: https://img.shields.io/pypi/v/stumpy.svg :target: https://pypi.org/project/stumpy/ :alt: PyPI Version .. |إصدار Conda Forge| image:: https://anaconda.org/conda-forge/stumpy/badges/version.svg :target: https://anaconda.org/conda-forge/stumpy :alt: Conda-Forge Version .. |تنزيلات PyPI| image:: https://static.pepy.tech/badge/stumpy/month :target: https://pepy.tech/project/stumpy :alt: PyPI Downloads .. |الترخيص| image:: https://img.shields.io/pypi/l/stumpy.svg :target: https://github.com/stumpy-dev/stumpy/blob/main/LICENSE.txt :alt: License .. |حالة الاختبار| 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: Test Status .. |تغطية الكود| image:: https://img.shields.io/badge/Coverage-100%25-green :alt: Code Coverage .. |حالة RTD| image:: https://readthedocs.org/projects/stumpy/badge/?version=latest :target: https://stumpy.readthedocs.io/ :alt: ReadTheDocs Status .. |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: NumFOCUS Affiliated Project .. |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: STUMPY Logo
STUMPY هي مكتبة Python قوية وقابلة للتوسع تحسب بكفاءة شيئًا يُسمى matrix profile <https://stumpy.readthedocs.io/en/latest/Tutorial_The_Matrix_Profile.html>__، وهو مجرد طريقة أكاديمية للقول "لكل تتابع فرعي (أخضر) داخل السلاسل الزمنية الخاصة بك، حدد تلقائيًا أقرب جار مطابق له (رمادي)":
.. image:: https://github.com/stumpy-dev/stumpy/blob/main/docs/images/stumpy_demo.gif?raw=true :alt: STUMPY Animated GIF
المهم هو أنه بمجرد حساب matrix profile الخاص بك (اللوحة الوسطى أعلاه)، يمكن استخدامه بعد ذلك لمجموعة متنوعة من مهام تعدين بيانات السلاسل الزمنية مثل:
والمزيد ... <https://www.cs.ucr.edu/~eamonn/100_Time_Series_Data_Mining_Questions__with_Answers.pdf>__سواء كنت أكاديميًا أو عالم بيانات أو مطور برمجيات أو متحمسًا للسلاسل الزمنية، فإن STUMPY سهلة التثبيت وهدفنا هو تمكينك من الوصول إلى رؤى السلاسل الزمنية الخاصة بك بشكل أسرع. راجع التوثيق <https://stumpy.readthedocs.io/en/latest/>__ لمزيد من المعلومات.
يرجى الاطلاع على توثيق API <https://stumpy.readthedocs.io/en/latest/api.html>__ للحصول على قائمة كاملة بالدوال المتاحة، وراجع الدروس التعليمية <https://stumpy.readthedocs.io/en/latest/tutorials.html>__ المفيدة للحصول على أمثلة أكثر شمولاً لحالات الاستخدام. أدناه، ستجد مقتطفات برمجية توضح بسرعة كيفية استخدام STUMPY.
الاستخدام النموذجي (بيانات السلاسل الزمنية أحادية البعد) مع 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)
الاستخدام الموزع لبيانات السلاسل الزمنية أحادية البعد مع Dask Distributed عبر 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)
استخدام GPU لبيانات السلاسل الزمنية أحادية البعد مع 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)
بيانات السلاسل الزمنية متعددة الأبعاد مع 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)
تحليل بيانات السلاسل الزمنية متعددة الأبعاد الموزعة مع 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)
سلاسل السلاسل الزمنية مع 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)
left_matrix_profile_index = matrix_profile[:, 2]
right_matrix_profile_index = matrix_profile[:, 3]
idx = 10 # Subsequence index for which to retrieve the anchored time series chain for
anchored_chain = stumpy.atsc(left_matrix_profile_index, right_matrix_profile_index, idx)
all_chain_set, longest_unanchored_chain = stumpy.allc(left_matrix_profile_index, right_matrix_profile_index)
التقسيم الدلالي مع Fast Low-cost Unipotent Semantic Segmentation (FLUSS) <https://stumpy.readthedocs.io/en/latest/api.html#stumpy.fluss>__:
.. code:: python
import stumpy
import numpy as np