العودة إلى التحديثات
New releaseSep 6, 2026

darts v0.47.0

مكتبة بايثون للتنبؤ السهل الاستخدام واكتشاف الحالات الشاذة في السلاسل الزمنية.

مشاركة

السلاسل الزمنية أصبحت سهلة في Python

darts


PyPI version Conda Version Supported versions Docker Image Version (latest by date) GitHub Release Date GitHub Workflow Status Downloads Downloads codecov Code style: black Join the chat at https://gitter.im/u8darts/darts

Darts هي مكتبة Python للتنبؤ واكتشاف الشذوذ بطريقة سهلة الاستخدام على السلاسل الزمنية. تحتوي على مجموعة متنوعة من النماذج، من الكلاسيكية مثل ARIMA إلى الشبكات العصبية العميقة. يمكن استخدام جميع نماذج التنبؤ بالطريقة نفسها، باستخدام دوال fit() و predict()، على غرار scikit-learn. تسهّل المكتبة أيضًا إجراء الاختبار الخلفي للنماذج، ودمج تنبؤات عدة نماذج، ومراعاة البيانات الخارجية. تدعم Darts السلاسل الزمنية والنماذج أحادية المتغير ومتعددة المتغيرات. يمكن تدريب النماذج القائمة على تعلم الآلة على مجموعات بيانات كبيرة محتملة تحتوي على سلاسل زمنية متعددة، كما تقدّم بعض النماذج دعمًا غنيًا للتنبؤ الاحتمالي.

تقدّم Darts أيضًا قدرات واسعة لاكتشاف الشذوذ. على سبيل المثال، من السهل تطبيق نماذج PyOD على السلاسل الزمنية للحصول على درجات الشذوذ، أو تغليف أي من نماذج التنبؤ أو التصفية في Darts للحصول على نماذج اكتشاف شذوذ متكاملة.

التوثيق

مقدّمات عالية المستوى

مقالات حول مواضيع مختارة

التثبيت السريع

نوصي أولاً بإعداد بيئة Python نظيفة لمشروعك باستخدام Python 3.11+ مع أداتك المفضلة (conda, venv، virtualenv مع أو بدون virtualenvwrapper).

بمجرد إعداد بيئتك، يمكنك تثبيت darts باستخدام pip:

pip install darts

لمزيد من التفاصيل، يمكنك الرجوع إلى تعليمات التثبيت.

مثال على الاستخدام

التنبؤ

أنشئ كائن TimeSeries من Pandas DataFrame، وقسّمه إلى سلاسل تدريب/تحقق:

import pandas as pd
from darts import TimeSeries

# Read a pandas DataFrame
df = pd.read_csv("AirPassengers.csv", delimiter=",")

# Create a TimeSeries, specifying the time and value columns
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")

# Set aside the last 36 months as a validation series
train, val = series[:-36], series[-36:]

قم بملاءمة نموذج التمهيد الأسي، وقم بعمل تنبؤ (احتمالي) على مدى مدة سلسلة التحقق:

from darts.models import ExponentialSmoothing

model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)

ارسم الوسيط والمئينين الخامس و95:

import matplotlib.pyplot as plt

series.plot()
prediction.plot(label="forecast", low_quantile=0.05, high_quantile=0.95)
plt.legend()
مثال على تنبؤ darts

اكتشاف الشذوذ

حمّل سلسلة متعددة المتغيرات، واقتطعها، واحتفظ بمكوّنين، وقسّم مجموعتي التدريب والتحقق:

from darts.datasets import ETTh2Dataset

series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)

ابنِ مُقيِّم شذوذ k-means، ودرِّبه على مجموعة التدريب واستخدمه على مجموعة التحقق للحصول على درجات الشذوذ:

from darts.ad import KMeansScorer

scorer = KMeansScorer(k=2, window=5)
scorer.fit(train)
anom_score = scorer.score(val)

قم ببناء كاشف شذوذ ثنائي وقم بتدريبه على درجات التدريب، ثم استخدمه على درجات التحقق للحصول على تصنيف شذوذ ثنائي:

from darts.ad import QuantileDetector

detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)

رسم (تحريك وقياس بعض السلاسل لجعل كل شيء يظهر على نفس الشكل):

import matplotlib.pyplot as plt

series.plot()
(anom_score / 2. - 100).plot(label="computed anomaly score", c="orangered", lw=3)
(binary_anom * 45 - 150).plot(label="detected binary anomaly", lw=4)
darts anomaly detection example

الميزات

  • نماذج التنبؤ: مجموعة كبيرة من نماذج التنبؤ لمهام الانحدار وكذلك التصنيف؛ من النماذج الإحصائية (مثل ARIMA) إلى نماذج التعلم العميق (مثل N-BEATS). راجع نماذج التنبؤ أدناه.

  • كشف الشذوذ تحتوي وحدة darts.ad على مجموعة من مُقيِّمات الشذوذ، والكاشفات، والمُجمِّعات، والتي يمكن دمجها جميعًا لكشف الشذوذ في السلاسل الزمنية. من السهل تغليف أي من نماذج التنبؤ أو التصفية في Darts لبناء نموذج كشف شذوذ متكامل يقارن التنبؤات بالقيم الفعلية. يجعل PyODScorer استخدام كاشفات PyOD على السلاسل الزمنية أمرًا بسيطًا.

  • دعم متعدد المتغيرات: يمكن أن يكون TimeSeries متعدد المتغيرات - أي أن يحتوي على عدة أبعاد/أعمدة متغيرة زمنيًا بدلاً من قيمة عددية واحدة. يمكن للعديد من النماذج استهلاك وإنتاج سلاسل متعددة المتغيرات.

  • التدريب على سلاسل متعددة (النماذج الشاملة): جميع النماذج القائمة على التعلم الآلي (بما في ذلك جميع الشبكات العصبية) تدعم التدريب على سلاسل متعددة (قد تكون متعددة المتغيرات). يمكن أن يتوسع هذا ليشمل مجموعات بيانات كبيرة أيضًا.

  • دعم احتمالي: يمكن لكائنات TimeSeries (اختياريًا) تمثيل سلاسل زمنية عشوائية؛ يمكن استخدام هذا على سبيل المثال للحصول على فترات ثقة، وتدعم العديد من النماذج أنماطًا مختلفة من التنبؤ الاحتمالي (مثل تقدير التوزيعات المعلمية أو الكميات). كما أن بعض مُقيِّمات كشف الشذوذ قادرة على استغلال هذه التوزيعات التنبؤية.

الفئات