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

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، وقسّمه إلى سلاسل تدريب/تحقق:```python
import pandas as pd
from darts import TimeSeries
df = pd.read_csv("AirPassengers.csv", delimiter=",")
series = TimeSeries.from_dataframe(df, "Month", "#Passengers")
train, val = series[:-36], series[-36:]
قم بملاءمة نموذج التمهيد الأسي، وقم بعمل تنبؤ (احتمالي) على مدى مدة سلسلة التحقق:```python
from darts.models import ExponentialSmoothing
model = ExponentialSmoothing()
model.fit(train)
prediction = model.predict(len(val), num_samples=1000)
ارسم الوسيط والمئينين الخامس و95:```python import matplotlib.pyplot as plt
series.plot() prediction.plot(label="forecast", low_quantile=0.05, high_quantile=0.95) plt.legend()
<div style="text-align:center;">
<img src="https://raw.githubusercontent.com/unit8co/darts/master/static/images/example.png" alt="darts forecast example" />
</div>
### كشف الشذوذ
حمّل سلسلة متعددة المتغيرات، واقتطعها، واحتفظ بمكوّنين، وقسّم مجموعتي التدريب والتحقق:```python
from darts.datasets import ETTh2Dataset
series = ETTh2Dataset().load()[:10000][["MUFL", "LULL"]]
train, val = series.split_before(0.6)
ابنِ مُقيِّم شذوذ k-means، ودرِّبه على مجموعة التدريب واستخدمه على مجموعة التحقق للحصول على درجات الشذوذ:```python from darts.ad import KMeansScorer
scorer = KMeansScorer(k=2, window=5) scorer.fit(train) anom_score = scorer.score(val)
ابنِ كاشف شذوذ ثنائي ودرّبه على درجات التدريب،
ثم استخدمه على درجات التحقق للحصول على تصنيف شذوذ ثنائي:```python
from darts.ad import QuantileDetector
detector = QuantileDetector(high_quantile=0.99)
detector.fit(scorer.score(train))
binary_anom = detector.detect(anom_score)
رسم بياني (إزاحة وتحجيم بعض السلاسل لجعل كل شيء يظهر على نفس الشكل):```python 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)
<div style="text-align:center;">
<img src="https://raw.githubusercontent.com/unit8co/darts/master/static/images/example_ad.png" alt="darts anomaly detection example" />
</div>
## الميزات
* **نماذج التنبؤ:** مجموعة كبيرة من نماذج التنبؤ لمهام الانحدار وكذلك التصنيف؛ من النماذج الإحصائية (مثل
ARIMA) إلى نماذج التعلم العميق (مثل N-BEATS). راجع [نماذج التنبؤ](#forecasting-models) أدناه.
* **كشف الشذوذ** تحتوي وحدة `darts.ad` على مجموعة من مُقيِّمات الشذوذ،
والكاشفات، والمُجمِّعات، والتي يمكن دمجها جميعًا لكشف الشذوذ في السلاسل الزمنية.
من السهل تغليف أي من نماذج التنبؤ أو التصفية في Darts لبناء
نموذج كشف شذوذ متكامل يقارن التنبؤات بالقيم الفعلية.
يجعل `PyODScorer` استخدام كاشفات PyOD على السلاسل الزمنية أمرًا بسيطًا.
* **دعم متعدد المتغيرات:** يمكن أن يكون `TimeSeries` متعدد المتغيرات - أي أنه يحتوي على أبعاد/أعمدة
متعددة متغيرة زمنيًا بدلاً من قيمة عددية واحدة. يمكن للعديد من النماذج استهلاك وإنتاج سلاسل متعددة المتغيرات.
* **التدريب على سلاسل متعددة (النماذج الشاملة):** جميع النماذج القائمة على التعلم الآلي (بما في ذلك جميع الشبكات العصبية)
تدعم التدريب على سلاسل متعددة (قد تكون متعددة المتغيرات). يمكن أن يتوسع هذا ليشمل مجموعات بيانات كبيرة أيضًا.
* **دعم احتمالي:** يمكن لكائنات `TimeSeries` (اختياريًا) تمثيل سلاسل زمنية
عشوائية؛ يمكن استخدام هذا على سبيل المثال للحصول على فترات ثقة، وتدعم العديد من النماذج أنماطًا مختلفة
من التنبؤ الاحتمالي (مثل تقدير التوزيعات المعلمية أو الكميات).
بعض مُقيِّمات كشف الشذوذ قادرة أيضًا على استغلال هذه التوزيعات التنبؤية.