# डेटासेट और विभाजन

> Skynet आपके केस कैसे पढ़ता है और उन्हें प्रशिक्षण, मान्यकरण और परीक्षण में कैसे बाँटता है।

डेटासेट केसों की एक तालिका है। हर पंक्ति एक केस है। Skynet आपके आर्टिफ़ैक्ट को केसों पर चलाता है, हर आउटपुट को स्कोर करता है, और संस्करणों की तुलना करने के लिए स्कोर इस्तेमाल करता है। यह पेज बताता है कि Skynet केसों को कैसे पढ़ता है, कॉलम भूमिकाएँ क्या करती हैं, और वह केसों को प्रशिक्षण, मान्यकरण और परीक्षण सेट में कैसे बाँटता है।

## डेटा लोड करें

विज़ार्ड के **इनपुट** चरण में आपके पास दो विकल्प हैं:

- **CSV, JSON या Excel फ़ाइल अपलोड करें**। Skynet `.csv`, `.json`, `.xlsx` और `.xls` फ़ाइलें स्वीकार करता है।
- **लाइब्रेरी से चुनें**। पहले सहेजा हुआ डेटासेट इस्तेमाल करें।

एक रन में ज़्यादा से ज़्यादा 200,000 केस हो सकते हैं।

सहेजे गए डेटासेट प्रबंधित करने के लिए [डेटासेट](/docs/hi/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"]`।

## डेटा मोड

भूमिकाएँ रन का डेटा मोड तय करती हैं:

| मोड    | कब                       | क्या होता है                                                                                       |
| ------ | ------------------------ | ------------------------------------------------------------------------------------------------- |
| जोड़े   | एक कॉलम आउटपुट है         | हर पंक्ति एक केस है जिसमें एक इनपुट और एक अपेक्षित मान होता है। आपको कम से कम 2 पंक्तियाँ चाहिए।          |
| एकल    | कोई कॉलम आउटपुट नहीं है    | रन सिर्फ़ पहली पंक्ति के इनपुट कॉलम इस्तेमाल करता है। यह एक केस है जिसमें कोई अपेक्षित मान नहीं होता।      |

एकल मोड में Skynet उसी एक केस को प्रशिक्षण, चयन और रिपोर्ट के लिए इस्तेमाल करता है। कुछ भी अलग नहीं रखा जाता।

## विभाजन

जोड़े मोड में Skynet केसों को तीन सेट में बाँटता है:

| सेट                | यह किसलिए है                                                     |
| ------------------ | ---------------------------------------------------------------- |
| प्रशिक्षण           | इंजन इन केसों पर संस्करण प्रस्तावित करता है और उन्हें परखता है।        |
| मान्यकरण           | Skynet इन केसों पर सबसे अच्छा संस्करण चुनता है।                      |
| परीक्षण             | Skynet इन केसों पर अंतिम स्कोर रिपोर्ट करता है।                      |

> [!NOTE]
> परीक्षण केस कभी किसी इंजन, प्रस्तावक या कॉन्ट्रैक्ट जाँच तक नहीं पहुँचते। अंतिम स्कोर उन केसों पर होता है जिन्हें ऑप्टिमाइज़र ने नहीं देखा।

### डिफ़ॉल्ट विभाजन

| जोड़ों की संख्या | प्रशिक्षण | मान्यकरण | परीक्षण |
| --------------- | -------- | ------- | ------ |
| 5 या ज़्यादा     | 70%      | 15%     | 15%    |
| 5 से कम         | 85%      | 15%     | 0%     |

5 से कम जोड़ों पर Skynet कोई परीक्षण सेट नहीं रखता।

### Skynet केसों को कैसे गिनता है

Skynet भिन्नों को largest-remainder (सबसे बड़ा शेषफल) तरीके से केसों की पूरी संख्याओं में बदलता है। गिनतियों का योग हमेशा केसों की कुल संख्या के बराबर होता है। शून्य से ज़्यादा भिन्न वाले सेट को कम से कम एक केस मिलता है। शून्य भिन्न वाले सेट को कोई केस नहीं मिलता।

विभाजन से पहले Skynet केसों को शफ़ल करता है। शफ़ल रन के सीड का इस्तेमाल करता है। अगर आप कोई सीड नहीं देते, तो Skynet केसों, लक्ष्य और आर्टिफ़ैक्ट से एक सीड बनाता है। इसलिए अगर आप वही रन दोबारा सबमिट करते हैं, तो आपको वही विभाजन मिलता है।

### वैकल्पिक व्यवस्थाएँ

- 5 से कम जोड़ों पर Skynet परीक्षण सेट हटा देता है और प्रशिक्षण व मान्यकरण को इस तरह स्केल करता है कि उनका योग 1 हो।
- अगर प्रशिक्षण सेट खाली है, तो Skynet मान्यकरण केसों को प्रशिक्षण के रूप में इस्तेमाल करता है।
- अगर कोई मान्यकरण सेट नहीं है, तो Skynet प्रशिक्षण केसों पर चयन करता है।
- अगर कोई परीक्षण सेट नहीं है, तो Skynet मान्यकरण पर रिपोर्ट करता है। अगर मान्यकरण सेट भी नहीं है, तो वह प्रशिक्षण पर रिपोर्ट करता है।

> [!WARNING]
> Skynet जो स्कोर प्रशिक्षण या मान्यकरण पर रिपोर्ट करता है, वह अलग रखे गए डेटा का स्कोर नहीं है। परीक्षण सेट पाने के लिए कम से कम 5 जोड़े इस्तेमाल करें।

## विभाजन बदलें

विभाजन वाले सेक्शन में **अनुशंसित विभाजन** दिखता है। इसके दो मोड हैं:

1. **अनुशंसा का उपयोग करें**: Skynet ऊपर दिया गया डिफ़ॉल्ट विभाजन इस्तेमाल करता है।
2. **मैनुअल चयन**: आप **प्रशिक्षण**, **मान्यकरण** और **परीक्षण** खुद सेट करते हैं।

मैनुअल चयन में हर फ़ील्ड 0 से 1 तक का भिन्न लेता है, 0.05 के चरणों में। हर फ़ील्ड दिखाता है कि उसे कितने केस मिलते हैं। तीनों भिन्नों का योग 1 होना चाहिए। अगर ऐसा नहीं है, तो विज़ार्ड "विभाजन का योग 1 होना चाहिए।" दिखाता है।

## कॉन्ट्रैक्ट नमूने

**मेट्रिक और रन** चरण की कॉन्ट्रैक्ट जाँच आपके कोड को 3 नमूना केसों पर चलाती है। Skynet ये नमूने सिर्फ़ प्रशिक्षण और मान्यकरण केसों से लेता है, परीक्षण से कभी नहीं।

## संबंधित पेज

- [डेटासेट](/docs/hi/guides/datasets)
- [मेट्रिक और स्कोरर](/docs/hi/concepts/scorers)
- [विज़ार्ड से रन शुरू करें](/docs/hi/guides/submit)
- [सीमाएँ](/docs/hi/limits)

---

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