डेटा, फ़ीचर्स और लेबल्स
हर सुपरवाइज़्ड समस्या एक टेबल की तरह होती है: पंक्तियाँ (rows) उदाहरण हैं, फ़ीचर कॉलम वह हैं जो आप जानते हैं, और लेबल कॉलम वह है जिसका आप अंदाज़ा लगाना चाहते हैं।
60 सेकंड में
डेटा, फ़ीचर्स और लेबल्स
हर सुपरवाइज़्ड समस्या एक टेबल की तरह होती है: पंक्तियाँ (rows) उदाहरण हैं, फ़ीचर कॉलम वह हैं जो आप जानते हैं, और लेबल कॉलम वह है जिसका आप अंदाज़ा लगाना चाहते हैं।
- पंक्ति / Row (उदाहरण, सैंपल): एक चीज़ जिसके बारे में हम जानते हैं, जैसे एक फूल, एक लोन ऐप्लिकेशन या एक खेत।
- फ़ीचर / Feature: एक कॉलम जिसे मॉडल को इनपुट के रूप में इस्तेमाल करने की अनुमति है, जैसे पंखुड़ी की लंबाई या बारिश की मात्रा।
- लेबल / Label (टारगेट): वह कॉलम जिसका हम अंदाज़ा लगाना चाहते हैं, जैसे फूल की प्रजाति या फ़सल की पैदावार।
X (एक टेबल, बड़ा अक्षर) और लेबल्स को y (एक कॉलम, छोटा अक्षर) कहते हैं।एक असली खिलौना डेटासेट: आइरिस के फूल
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) | स्पैम है या नहीं, प्रजाति, लोन मंज़ूर या नामंज़ूर |
अच्छे फ़ीचर्स और ख़राब फ़ीचर्स
- पंक्ति संख्याएँ या आईडी, जो केवल क्रम दिखाती हैं, कोई अर्थ नहीं
- ऐसी कोई भी चीज़ जो आपको सिर्फ़ जवाब पता चलने के बाद पता चलती है
- किसी दूसरे नाम से लेबल की ही एक कॉपी
- ऐसी जानकारी जो व्यक्तिगत है और जिसकी ज़रूरत नहीं है
- वे माप जो प्रेडिक्शन के समय ज्ञात हों
- ऐसी चीज़ें जो उचित रूप से लेबल पर असर डालती हैं
- हर पंक्ति के लिए एक ही तरह से रिकॉर्ड की गई हों
- सहमति और साफ़ उद्देश्य के साथ इकट्ठा की गई हों
कृपया सिर्फ़ संख्याएँ
X.describe() प्रिंट करें। किस फ़ीचर के मानों का फैलाव (spread of values) सबसे ज़्यादा है?और देखें और पढ़ें
लैब
वाइन डेटासेट बिना किसी लीकेज के, साफ़ तौर पर एक फ़ीचर टेबल X और एक लेबल कॉलम y में बँट गया।
समस्या
wine डेटासेट में 178 वाइन हैं, प्रत्येक के 13 रासायनिक माप हैं, और यह बताने के लिए एक लेबल है कि इसे तीन उत्पादकों में से किसने बनाया है।
- शुरुआती कोड चलाएँ। यह पूरी टेबल प्रिंट करता है, जिसमें एक
targetकॉलम शामिल है: यानी लेबल। - शुरुआती कोड
X = dfसेट करता है। इससे लेबल फ़ीचर्स में लीक हो जाता है। इसे ठीक करें ताकिXमें सिर्फ़ 13 फ़ीचर कॉलम ही हों। yको लेबल कॉलम पर सेट करें।n_classesको अलग-अलग लेबल्स की संख्या पर सेट करें, जिसकी गणनाyसे की गई हो (संख्या को हाथ से टाइप न करें)।- प्रिंट करें कि किस फ़ीचर का औसत मान (average value) सबसे बड़ा है।
प्रैक्टिस लैब
कोड में बदलाव करें और इसे रन करें। Python आपके ब्राउज़र में चलता है — हमारे सर्वर पर कुछ नहीं भेजा जाता।
कोई आउटपुट नहीं। वैल्यूज़ देखने के लिए print(...) जोड़ें।
आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1सबसे बड़े औसत वाला फ़ीचर ज़रूरी नहीं कि प्रेडिक्शन के लिए सबसे उपयोगी हो। क्यों?दिखाएं
औसत यूनिट (इकाई) पर निर्भर करता है। बड़ी यूनिट में मापे गए कॉलम का औसत बड़ा होगा, लेकिन इससे यह पता नहीं चलता कि क्या वह तीनों उत्पादकों के बीच फ़र्क करता है। उपयोगिता इस बात पर निर्भर करती है कि फ़ीचर अलग-अलग लेबल्स के साथ कितना अलग व्यवहार करता है, जिसे बाद के पाठों में मॉडल्स के ज़रिए मापा जाता है।
Q2मान लीजिए कि वाइन टेबल में टेक्स्ट में "grower_name" नाम का एक कॉलम भी था। अगर आप इसे X में रखते तो क्या होता?दिखाएं
यह शब्दों में लिखा गया लेबल ही है, इसलिए यह लीकेज है: मॉडल नाम पढ़ना सीख जाएगा और एकदम सही दिखेगा। असली इस्तेमाल में आपके पास उत्पादक का नाम नहीं होगा, क्योंकि यही तो वह चीज़ है जिसका आप अंदाज़ा लगाना चाहते हैं। ऐसे किसी भी कॉलम को हटा दें जो छिपा हुआ जवाब हो।
अक्सर पूछे जाने वाले सवाल
क्या लेबल हमेशा एक ही कॉलम होता है?
इस ट्रैक में, हाँ। कुछ समस्याएँ एक साथ कई चीज़ों का अंदाज़ा लगाती हैं, लेकिन बुनियादी विचार वही रहते हैं।
अगर कोई फ़ीचर टेक्स्ट हो, जैसे कोई कमेंट?
टेक्स्ट को संख्याओं में बदलना पड़ता है। आसान तरीके शब्दों को गिनते हैं; आधुनिक तरीके एम्बेडिंग्स (embeddings) का इस्तेमाल करते हैं। इस ट्रैक के लिए हम संख्याओं वाली टेबल तक ही सीमित रहेंगे।
क्या मुझे अपने पास मौजूद हर कॉलम का इस्तेमाल करना चाहिए?
नहीं। आईडी, लीक हुए कॉलम और ऐसे व्यक्तिगत डेटा को हटा दें जिसकी ज़रूरत नहीं है। ज़्यादा कॉलम होने से ओवरफ़िटिंग (overfitting) भी आसान हो सकती है। उन फ़ीचर्स से शुरुआत करें जो समझदारी भरे लगें और अगर टेस्टिंग से लगे कि वे मददगार हैं, तो और जोड़ें।
as_frame=True क्या करता है?
यह केवल एक सादे numpy ऐरे के बजाय कॉलम नामों के साथ एक pandas DataFrame के रूप में डेटा लौटाता है। इससे इसे पढ़ना और जाँचना आसान हो जाता है।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।