
darts v0.47.0
مكتبة بايثون للتنبؤ السهل الاستخدام واكتشاف الحالات الشاذة في السلاسل الزمنية.
السلاسل الزمنية أصبحت سهلة في Python

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()
اكتشاف الشذوذ
حمّل سلسلة متعددة المتغيرات، واقتطعها، واحتفظ بمكوّنين، وقسّم مجموعتي التدريب والتحقق:
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)
الميزات
-
نماذج التنبؤ: مجموعة كبيرة من نماذج التنبؤ لمهام الانحدار وكذلك التصنيف؛ من النماذج الإحصائية (مثل ARIMA) إلى نماذج التعلم العميق (مثل N-BEATS). راجع نماذج التنبؤ أدناه.
-
كشف الشذوذ تحتوي وحدة
darts.adعلى مجموعة من مُقيِّمات الشذوذ، والكاشفات، والمُجمِّعات، والتي يمكن دمجها جميعًا لكشف الشذوذ في السلاسل الزمنية. من السهل تغليف أي من نماذج التنبؤ أو التصفية في Darts لبناء نموذج كشف شذوذ متكامل يقارن التنبؤات بالقيم الفعلية. يجعلPyODScorerاستخدام كاشفات PyOD على السلاسل الزمنية أمرًا بسيطًا. -
دعم متعدد المتغيرات: يمكن أن يكون
TimeSeriesمتعدد المتغيرات - أي أن يحتوي على عدة أبعاد/أعمدة متغيرة زمنيًا بدلاً من قيمة عددية واحدة. يمكن للعديد من النماذج استهلاك وإنتاج سلاسل متعددة المتغيرات. -
التدريب على سلاسل متعددة (النماذج الشاملة): جميع النماذج القائمة على التعلم الآلي (بما في ذلك جميع الشبكات العصبية) تدعم التدريب على سلاسل متعددة (قد تكون متعددة المتغيرات). يمكن أن يتوسع هذا ليشمل مجموعات بيانات كبيرة أيضًا.
-
دعم احتمالي: يمكن لكائنات
TimeSeries(اختياريًا) تمثيل سلاسل زمنية عشوائية؛ يمكن استخدام هذا على سبيل المثال للحصول على فترات ثقة، وتدعم العديد من النماذج أنماطًا مختلفة من التنبؤ الاحتمالي (مثل تقدير التوزيعات المعلمية أو الكميات). كما أن بعض مُقيِّمات كشف الشذوذ قادرة على استغلال هذه التوزيعات التنبؤية.