# مجموعات البيانات والتقسيم

> كيف يقرأ Skynet حالاتك ويقسمها إلى تدريب وتحقّق واختبار.

مجموعة البيانات هي جدول من الحالات. كل صف هو حالة واحدة. يشغّل Skynet العنصر الخاص بك على الحالات، ويعطي درجة لكل مخرج، ويستخدم الدرجات للمقارنة بين الإصدارات. تشرح هذه الصفحة كيف يقرأ Skynet الحالات، وما وظيفة أدوار الأعمدة، وكيف يقسّم الحالات إلى مجموعات التدريب والتحقّق والاختبار.

## تحميل البيانات

في خطوة **المُدخلات** في المعالج، لديك خياران:

- **ارفع ملف CSV أو JSON أو Excel**. يقبل Skynet ملفات `.csv` و`.json` و`.xlsx` و`.xls`.
- **اختر من المكتبة**. استخدم مجموعة بيانات حفظتها من قبل.

يمكن أن يحتوي التشغيل على 200,000 حالة على الأكثر.

اقرأ [مجموعات البيانات](/docs/ar/guides/datasets) لإدارة مجموعات البيانات المحفوظة.

## أدوار الأعمدة

تحت **كيفية قراءة البيانات**، أعطِ كل عمود دورًا واحدًا:

| الدور   | ماذا يفعل Skynet بالعمود                                  |
| ------- | --------------------------------------------------------- |
| الإدخال | يضع القيمة في `input`، الذي يستلمه كود التشغيل الخاص بك   |
| الإخراج | يضع القيمة في `expected`، الذي يستلمه المقياس الخاص بك    |
| تخطٍّ   | لا يستخدم العمود                                          |

لكل عمود أيضًا نوع: **نص** أو **صورة**.

يمكن لعمود واحد فقط أن يكون عمود الإخراج. إذا عيّنت عمودًا ثانيًا على الإخراج، يتغيّر العمود الأول إلى تخطٍّ.

### ما يستلمه الكود الخاص بك

لكل صف، يبني Skynet حالة واحدة:

- `input` هو dict. يحتوي على مفتاح واحد لكل عمود إدخال.
- `expected` هو dict بمفتاح واحد: اسم عمود الإخراج.

لهذا الجدول:

| message             | label   | id  |
| ------------------- | ------- | --- |
| I was charged twice | billing | 17  |

مع الأدوار `message` = الإدخال، و`label` = الإخراج، و`id` = تخطٍّ، يستلم الكود الخاص بك:

```python tab="input"
{"message": "I was charged twice"}
```

```python tab="expected"
{"label": "billing"}
```

> [!TIP]
> في المقياس الخاص بك، اقرأ القيمة المتوقعة باسم العمود، مثل `expected["label"]`.

## أوضاع البيانات

تحدّد الأدوار وضع البيانات للتشغيل:

| الوضع  | متى                       | ماذا يحدث                                                                                   |
| ------ | ------------------------- | ------------------------------------------------------------------------------------------- |
| أزواج  | عمود واحد هو الإخراج      | كل صف هو حالة بإدخال وقيمة متوقعة. تحتاج إلى صفّين على الأقل.                              |
| مفرد   | لا يوجد عمود إخراج        | يستخدم التشغيل أعمدة الإدخال في الصف الأول فقط. إنها حالة واحدة بلا قيمة متوقعة.           |

في الوضع المفرد، يستخدم Skynet الحالة الواحدة للتدريب والاختيار والتقرير. لا يحتجز أي شيء جانبًا.

## التقسيم

في وضع الأزواج، يقسّم Skynet الحالات إلى ثلاث مجموعات:

| المجموعة        | الغرض منها                                              |
| --------------- | ------------------------------------------------------- |
| تدريب           | يقترح المحرّك الإصدارات ويختبرها على هذه الحالات.      |
| تحقّق (Val)     | يختار Skynet أفضل إصدار على هذه الحالات.               |
| اختبار          | يبلّغ Skynet عن الدرجة النهائية على هذه الحالات.        |

> [!NOTE]
> لا تصل حالات الاختبار أبدًا إلى أي محرّك أو مقترِح أو إلى فحص العقد. تُحسب الدرجة النهائية على حالات لم يرها المُحسِّن.

### التقسيم الافتراضي

| عدد الأزواج   | تدريب | تحقّق | اختبار |
| ------------- | ----- | ----- | ------ |
| 5 أو أكثر     | 70%   | 15%   | 15%    |
| أقل من 5      | 85%   | 15%   | 0%     |

مع أقل من 5 أزواج، لا يحتفظ Skynet بمجموعة اختبار.

### كيف يعدّ Skynet الحالات

يحوّل Skynet الكسور إلى أعداد صحيحة من الحالات بطريقة الباقي الأكبر. يساوي مجموع الأعداد دائمًا عدد الحالات. المجموعة ذات الكسر الأكبر من صفر تحصل على حالة واحدة على الأقل. المجموعة ذات الكسر صفر لا تحصل على أي حالة.

قبل التقسيم، يخلط Skynet الحالات. يستخدم الخلط البذرة (seed) الخاصة بالتشغيل. إذا لم تعطِ بذرة، ينشئ Skynet بذرة من الحالات والهدف والعنصر. لذلك إذا أرسلت التشغيل نفسه مرة أخرى، تحصل على التقسيم نفسه.

### البدائل الاحتياطية

- مع أقل من 5 أزواج، يحذف Skynet مجموعة الاختبار ويعيد تحجيم التدريب والتحقّق ليكون مجموعهما 1.
- إذا كانت مجموعة التدريب فارغة، يستخدم Skynet حالات التحقّق كمجموعة تدريب.
- إذا لم توجد مجموعة تحقّق، يختار Skynet على حالات التدريب.
- إذا لم توجد مجموعة اختبار، يبلّغ Skynet على مجموعة التحقّق. وإذا لم توجد مجموعة تحقّق أيضًا، يبلّغ على مجموعة التدريب.

> [!WARNING]
> الدرجة التي يبلّغ عنها Skynet على التدريب أو التحقّق ليست درجة على بيانات محتجزة. استخدم 5 أزواج على الأقل للحصول على مجموعة اختبار.

## تغيير التقسيم

يعرض قسم التقسيم **التقسيم المُوصى به**. له وضعان:

1. **استخدم التوصية**: يستخدم Skynet التقسيم الافتراضي أعلاه.
2. **تحديد يدوي**: تعيّن أنت قيم **تدريب** و**تحقّق** و**اختبار**.

في التحديد اليدوي، يقبل كل حقل كسرًا من 0 إلى 1، بخطوات قدرها 0.05. يعرض كل حقل عدد الحالات التي يحصل عليها. يجب أن يكون مجموع الكسور الثلاثة 1. إذا لم يكن كذلك، يعرض المعالج "يجب أن يكون مجموع التقسيم 1."

## عيّنات العقد

يشغّل فحص العقد في خطوة **المقياس والتشغيل** الكود الخاص بك على 3 حالات عيّنة. يأخذ Skynet هذه العيّنات من حالات التدريب والتحقّق فقط، وليس من الاختبار أبدًا.

## صفحات ذات صلة

- [مجموعات البيانات](/docs/ar/guides/datasets)
- [المقاييس والمُقيِّمات](/docs/ar/concepts/scorers)
- [إرسال تشغيل](/docs/ar/guides/submit)
- [الحدود](/docs/ar/limits)

---

Source: https://staging.skynetml.com/docs/ar/concepts/datasets
