मशीन लर्निंग के बुनियादी सिद्धांतमध्यमपाठ 1085 मिनट का पाठ

डेटा, फ़ीचर्स और लेबल्स

हर सुपरवाइज़्ड समस्या एक टेबल की तरह होती है: पंक्तियाँ (rows) उदाहरण हैं, फ़ीचर कॉलम वह हैं जो आप जानते हैं, और लेबल कॉलम वह है जिसका आप अंदाज़ा लगाना चाहते हैं।

पाठ वीडियो में

60 सेकंड में

डेटा, फ़ीचर्स और लेबल्स

हर सुपरवाइज़्ड समस्या एक टेबल की तरह होती है: पंक्तियाँ (rows) उदाहरण हैं, फ़ीचर कॉलम वह हैं जो आप जानते हैं, और लेबल कॉलम वह है जिसका आप अंदाज़ा लगाना चाहते हैं।

1/5
आसान शब्दों में
स्कूल के एक रजिस्टर के बारे में सोचें। हर पंक्ति एक छात्र है। कॉलम में लंबाई, उम्र और कक्षा लिखी है। अगर आप किसी छात्र की लंबाई और उम्र देखकर उसकी कक्षा का अंदाज़ा लगाना चाहते हैं, तो लंबाई और उम्र सुराग (clues) हैं, और कक्षा जवाब है। मशीन लर्निंग में, सुरागों को फ़ीचर्स (features) कहा जाता है और जवाब को लेबल (label) कहा जाता है।
इस ट्रैक की लगभग हर समस्या एक टेबल से शुरू होती है।
  • पंक्ति / Row (उदाहरण, सैंपल): एक चीज़ जिसके बारे में हम जानते हैं, जैसे एक फूल, एक लोन ऐप्लिकेशन या एक खेत।
  • फ़ीचर / Feature: एक कॉलम जिसे मॉडल को इनपुट के रूप में इस्तेमाल करने की अनुमति है, जैसे पंखुड़ी की लंबाई या बारिश की मात्रा।
  • लेबल / Label (टारगेट): वह कॉलम जिसका हम अंदाज़ा लगाना चाहते हैं, जैसे फूल की प्रजाति या फ़सल की पैदावार।
आदतन, प्रोग्रामर फ़ीचर्स को X (एक टेबल, बड़ा अक्षर) और लेबल्स को y (एक कॉलम, छोटा अक्षर) कहते हैं।

एक असली खिलौना डेटासेट: आइरिस के फूल

scikit-learn सीखने के लिए छोटे डेटासेट्स के साथ आता है। iris डेटासेट में 150 फूल हैं। प्रत्येक के चार माप हैं, और यह बताने के लिए एक लेबल है कि वह तीन में से किस प्रजाति का है।
Python: look at features and labelspython
from sklearn.datasets import load_iris

iris = load_iris(as_frame=True)
X = iris.data          # features: a pandas DataFrame
y = iris.target        # labels: 0, 1 or 2

print("Rows and feature columns:", X.shape)
print("Feature names:", list(X.columns))
print("Species names:", iris.target_names.tolist())
print()
print(X.head())
print()
print("How many of each label:")
print(y.value_counts().sort_index())

दो तरह के लेबल, दो तरह की समस्याएँ

लेबल ऐसा दिखता हैसमस्या का प्रकारउदाहरण
पैमाने पर एक संख्यारिग्रेशन (Regression)फ़सल की पैदावार, घर का किराया, सफ़र का समय
कुछ समूहों में से एकवर्गीकरण (Classification)स्पैम है या नहीं, प्रजाति, लोन मंज़ूर या नामंज़ूर

अच्छे फ़ीचर्स और ख़राब फ़ीचर्स

एक फ़ीचर तब उपयोगी होता है जब उसमें लेबल के बारे में जानकारी हो और भविष्यवाणी (prediction) करते समय वह सचमुच उपलब्ध हो।
ख़राब फ़ीचर्स
  • पंक्ति संख्याएँ या आईडी, जो केवल क्रम दिखाती हैं, कोई अर्थ नहीं
  • ऐसी कोई भी चीज़ जो आपको सिर्फ़ जवाब पता चलने के बाद पता चलती है
  • किसी दूसरे नाम से लेबल की ही एक कॉपी
  • ऐसी जानकारी जो व्यक्तिगत है और जिसकी ज़रूरत नहीं है
अच्छे फ़ीचर्स
  • वे माप जो प्रेडिक्शन के समय ज्ञात हों
  • ऐसी चीज़ें जो उचित रूप से लेबल पर असर डालती हैं
  • हर पंक्ति के लिए एक ही तरह से रिकॉर्ड की गई हों
  • सहमति और साफ़ उद्देश्य के साथ इकट्ठा की गई हों
ख़तरा
लेबल लीकेज (Label leakage) तब होता है जब लेबल, या उसका भेद खोलने वाली कोई चीज़, चुपके से फ़ीचर्स में शामिल हो जाती है। उदाहरण: कोई मरीज़ अस्पताल में भर्ती हुआ था या नहीं, इसका अंदाज़ा लगाने के लिए "वार्ड नंबर" कॉलम का इस्तेमाल करना जो भर्ती होने के बाद ही भरा जाता है। मॉडल टेस्टिंग में तो बहुत बढ़िया दिखता है लेकिन असली ज़िंदगी में बेकार साबित होता है। हमेशा हर फ़ीचर के बारे में पूछें: "क्या मुझे यह बात उस समय पता होगी जब मुझे प्रेडिक्शन की ज़रूरत है?"

कृपया सिर्फ़ संख्याएँ

scikit-learn के मॉडल्स को संख्याओं की ज़रूरत होती है। "ज़िला" जैसे टेक्स्ट कॉलम को पहले संख्याओं में बदलना होगा, उदाहरण के लिए हर ज़िले के लिए एक कॉलम बनाकर जिसमें 0 या 1 हो (इसे वन-हॉट एन्कोडिंग कहते हैं)। छूटे हुए मानों (missing values) को आमतौर पर पहले भरना या हटाना पड़ता है। इस ट्रैक का डेटा सफ़ाई वाला पाठ दिखाता है कि यह कैसे किया जाता है।
नोट
डेटा की गुणवत्ता मॉडल के चुनाव से ज़्यादा मायने रखती है। साफ़-सुथरे, ईमानदार डेटा पर बना एक सीधा-सादा मॉडल आमतौर पर उलझे हुए डेटा पर बने चालाक मॉडल को हरा देता है। पाठ कदम 7 · डेटा ही प्रोडक्ट है लार्ज लैंग्वेज मॉडल्स के लिए भी यही बात समझाता है।
यह आज़माएँ। कोड में, X.describe() प्रिंट करें। किस फ़ीचर के मानों का फैलाव (spread of values) सबसे ज़्यादा है?

और देखें और पढ़ें

लैब

वाइन डेटासेट बिना किसी लीकेज के, साफ़ तौर पर एक फ़ीचर टेबल X और एक लेबल कॉलम y में बँट गया।

~15 min

समस्या

wine डेटासेट में 178 वाइन हैं, प्रत्येक के 13 रासायनिक माप हैं, और यह बताने के लिए एक लेबल है कि इसे तीन उत्पादकों में से किसने बनाया है।

  1. शुरुआती कोड चलाएँ। यह पूरी टेबल प्रिंट करता है, जिसमें एक target कॉलम शामिल है: यानी लेबल।
  2. शुरुआती कोड X = df सेट करता है। इससे लेबल फ़ीचर्स में लीक हो जाता है। इसे ठीक करें ताकि X में सिर्फ़ 13 फ़ीचर कॉलम ही हों।
  3. y को लेबल कॉलम पर सेट करें।
  4. n_classes को अलग-अलग लेबल्स की संख्या पर सेट करें, जिसकी गणना y से की गई हो (संख्या को हाथ से टाइप न करें)।
  5. प्रिंट करें कि किस फ़ीचर का औसत मान (average value) सबसे बड़ा है।

प्रैक्टिस लैब

कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।

आउटपुट

कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।

आपका काम तब पूरा होगा जब

कठिन सवाल

उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।

Q1सबसे बड़े औसत वाला फ़ीचर ज़रूरी नहीं कि प्रेडिक्शन के लिए सबसे उपयोगी हो। क्यों?दिखाएं

औसत यूनिट (इकाई) पर निर्भर करता है। बड़ी यूनिट में मापे गए कॉलम का औसत बड़ा होगा, लेकिन इससे यह पता नहीं चलता कि क्या वह तीनों उत्पादकों के बीच फ़र्क करता है। उपयोगिता इस बात पर निर्भर करती है कि फ़ीचर अलग-अलग लेबल्स के साथ कितना अलग व्यवहार करता है, जिसे बाद के पाठों में मॉडल्स के ज़रिए मापा जाता है।

Q2मान लीजिए कि वाइन टेबल में टेक्स्ट में "grower_name" नाम का एक कॉलम भी था। अगर आप इसे X में रखते तो क्या होता?दिखाएं

यह शब्दों में लिखा गया लेबल ही है, इसलिए यह लीकेज है: मॉडल नाम पढ़ना सीख जाएगा और एकदम सही दिखेगा। असली इस्तेमाल में आपके पास उत्पादक का नाम नहीं होगा, क्योंकि यही तो वह चीज़ है जिसका आप अंदाज़ा लगाना चाहते हैं। ऐसे किसी भी कॉलम को हटा दें जो छिपा हुआ जवाब हो।

जारी रखने के लिए कृपया साइन इन करें।

अक्सर पूछे जाने वाले सवाल

क्या लेबल हमेशा एक ही कॉलम होता है?

इस ट्रैक में, हाँ। कुछ समस्याएँ एक साथ कई चीज़ों का अंदाज़ा लगाती हैं, लेकिन बुनियादी विचार वही रहते हैं।

अगर कोई फ़ीचर टेक्स्ट हो, जैसे कोई कमेंट?

टेक्स्ट को संख्याओं में बदलना पड़ता है। आसान तरीके शब्दों को गिनते हैं; आधुनिक तरीके एम्बेडिंग्स (embeddings) का इस्तेमाल करते हैं। इस ट्रैक के लिए हम संख्याओं वाली टेबल तक ही सीमित रहेंगे।

क्या मुझे अपने पास मौजूद हर कॉलम का इस्तेमाल करना चाहिए?

नहीं। आईडी, लीक हुए कॉलम और ऐसे व्यक्तिगत डेटा को हटा दें जिसकी ज़रूरत नहीं है। ज़्यादा कॉलम होने से ओवरफ़िटिंग (overfitting) भी आसान हो सकती है। उन फ़ीचर्स से शुरुआत करें जो समझदारी भरे लगें और अगर टेस्टिंग से लगे कि वे मददगार हैं, तो और जोड़ें।

as_frame=True क्या करता है?

यह केवल एक सादे numpy ऐरे के बजाय कॉलम नामों के साथ एक pandas DataFrame के रूप में डेटा लौटाता है। इससे इसे पढ़ना और जाँचना आसान हो जाता है।

पाठ का टेस्ट

5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें