अब हम Machine Learning के सबसे महत्वपूर्ण भागों में से एक को कवर करते हैं:
🧠 1. डेटा क्या है? / What is Data?
डेटा वह कच्चा इनपुट होता है जिससे मशीन लर्निंग मॉडल कुछ सीखता है।
यह संख्याओं, शब्दों, इमेज या ऑडियो के रूप में हो सकता है।
👉 उदाहरण:
उम्र | वेतन | नौकरी | लोन स्वीकृत? |
---|---|---|---|
25 | ₹30k | हाँ | नहीं |
📦 2. डेटा का प्रकार / Types of Data:
प्रकार | विवरण | उदाहरण |
---|---|---|
Structured | टेबल फॉर्म में डेटा | Excel शीट, SQL |
Unstructured | इमेज, टेक्स्ट, ऑडियो | फोटो, ईमेल |
Semi-structured | आंशिक रूप से टेबल | JSON, XML |
🧹 3. डेटा प्रीप्रोसेसिंग / Data Preprocessing
डेटा को मॉडल के लिए तैयार करना एक अनिवार्य स्टेप है।
🛠️ इसमें मुख्य चरण होते हैं:
🔹 A. Missing Values को हैंडल करना
- NaN या null को हटाना / भरना
🔹 B. Encoding Categorical Data
- नौकरी = “हाँ” / “नहीं” को 1/0 में बदलना (Label Encoding)
🔹 C. Normalization / Scaling
- सभी फीचर्स को एक समान स्केल पर लाना
उम्र = 25 से 60 → [0, 1] स्केल में </br>
X_scaled = (X – min) / (max – min)
🔹 D. Outlier Detection
- ऐसे डेटा पॉइंट्स जो बहुत अलग हैं — उन्हें हटाना
🏗️ 4. फीचर इंजीनियरिंग क्या है? / What is Feature Engineering?
Feature Engineering का अर्थ है:
“डेटा से ऐसे विशेष गुण (features) निकालना जो मॉडल को बेहतर सीखने में मदद करें।”
📌 फीचर = वह जानकारी जो आउटपुट को प्रभावित करती है
🔧 5. फीचर इंजीनियरिंग की तकनीकें / Techniques of Feature Engineering:
🔹 A. Feature Creation (नए फीचर्स बनाना)
उदाहरण:
जन्मतिथि → उम्र
“Total Purchase” + “Discount” → Final Price
🔹 B. Feature Selection (बेहतर फीचर चुनना)
सिर्फ वही फीचर रखें जो आउटपुट से सबसे ज़्यादा संबंधित हों।
उपयोगी तकनीकें:
- Correlation Matrix
- Mutual Information
- Recursive Feature Elimination (RFE)
🔹 C. Dimensionality Reduction (फ़ीचर घटाना)
- जब फीचर्स बहुत अधिक हों (High Dimensional Data)
- तकनीक: PCA (Principal Component Analysis)
🤖 उदाहरण:
from sklearn.preprocessing import LabelEncoder, MinMaxScaler
import pandas as pd
data = pd.DataFrame({
'Age': [25, 32, 40],
'Job': ['Yes', 'No', 'Yes'],
'Salary': [30000, 50000, 60000]
})
# Categorical Encoding
le = LabelEncoder()
data['Job'] = le.fit_transform(data['Job'])
# Scaling
scaler = MinMaxScaler()
data[['Age', 'Salary']] = scaler.fit_transform(data[['Age', 'Salary']])
📊 Summary Table:
Step | कार्य |
---|---|
Data Cleaning | Missing values, Outliers हटाना |
Encoding | Categorical डेटा को संख्यात्मक बनाना |
Scaling | फीचर्स को समान स्केल पर लाना |
Feature Creation | नए सार्थक फीचर्स बनाना |
Feature Selection | ज़रूरी फीचर्स चुनना |
Dimensionality Reduction | अनावश्यक फीचर्स घटाना |
🎯 निष्कर्ष / Conclusion:
“Garbage In → Garbage Out”
अगर डेटा और फीचर सही नहीं हैं, तो मॉडल का परफॉर्मेंस अच्छा नहीं होगा। इसलिए ML की सफलता का 70% हिस्सा डेटा और फीचर इंजीनियरिंग पर निर्भर करता है।
Data Preprocessing + Feature Engineering Example
हम एक सिंपल टेबल डेटा लेंगे (उम्र, वेतन, जॉब टाइप), और इसे PyTorch में टेंसर बनाकर स्केल, एनकोड और ट्रेनिंग के लिए तैयार करेंगे।
📌 उदाहरण डेटा:
उम्र (Age) | वेतन (Salary) | नौकरी (Job) |
---|---|---|
25 | 30000 | Yes |
35 | 45000 | No |
45 | 60000 | Yes |
🔧 कोड:
import torch
import pandas as pd
from sklearn.preprocessing import LabelEncoder, MinMaxScaler
# -------------------------------
# Step 1: Raw Data Load
# -------------------------------
data = pd.DataFrame({
'Age': [25, 35, 45],
'Salary': [30000, 45000, 60000],
'Job': ['Yes', 'No', 'Yes'],
'Approved': [1, 0, 1] # Target label
})
# -------------------------------
# Step 2: Label Encode 'Job'
# -------------------------------
le = LabelEncoder()
data['Job'] = le.fit_transform(data['Job']) # 'Yes'→1, 'No'→0
# -------------------------------
# Step 3: Feature Scaling
# -------------------------------
scaler = MinMaxScaler()
data[['Age', 'Salary']] = scaler.fit_transform(data[['Age', 'Salary']])
# -------------------------------
# Step 4: Split Features & Labels
# -------------------------------
X = data[['Age', 'Salary', 'Job']].values # Features
y = data['Approved'].values # Labels
# -------------------------------
# Step 5: Convert to PyTorch tensors
# -------------------------------
X_tensor = torch.tensor(X, dtype=torch.float32)
y_tensor = torch.tensor(y, dtype=torch.float32).unsqueeze(1)
# -------------------------------
# Output for verification
# -------------------------------
print("Features Tensor:\n", X_tensor)
print("Labels Tensor:\n", y_tensor)
📤 Output (उदाहरण):
Features Tensor:
tensor([[0.0000, 0.0000, 1.0000],
[0.5000, 0.5000, 0.0000],
[1.0000, 1.0000, 1.0000]])
Labels Tensor:
tensor([[1.],
[0.],
[1.]])
🔍 इस कोड में हमने क्या सीखा:
चरण | कार्य |
---|---|
Step 1 | DataFrame बनाया |
Step 2 | ‘Job’ कॉलम को Encode किया |
Step 3 | Features को Normalize किया |
Step 4 | Features और Labels अलग किए |
Step 5 | NumPy से PyTorch Tensor में बदला |
📘 यह कोड खास तौर पर उपयोगी होगा:
- Tabular Dataset पर Deep Learning Model चलाने से पहले
- PyTorch में MLP (Multi-layer Perceptron) ट्रेन करने के लिए डेटा तैयार करने में
🔷 🔹 Why Data & Feature Engineering?
Reason | Benefit |
---|---|
Raw Data को साफ करना | मॉडल training में noise और errors कम होते हैं |
Features को encode/scaling करना | डेटा को गणितीय रूप से मॉडल के लिए उपयुक्त बनाना |
अच्छे Features निकालना | Accuracy, Generalization और Explainability बढ़ाना |
🔶 1. डेटा प्रीप्रोसेसिंग (Data Preprocessing)
डेटा को model के लिए तैयार करना:
✅ Missing Values हटाना या भरना
✅ Categorical Data को Encode करना
✅ Scaling / Normalization
✅ Outlier को detect और handle करना
🔶 2. फीचर इंजीनियरिंग
🔹 2.1 Feature Creation
जैसे:
- जन्मतिथि → उम्र
- Final Price = Price – Discount
🔹 2.2 Feature Selection
सिर्फ वे features जो target से अधिक संबंधित हों (correlation आदि से चुने गए)
🔹 2.3 Dimensionality Reduction
High-dimensional डेटा को PCA या Autoencoder जैसे तरीकों से कम करना
🔷 🔧 PyTorch कोड उदाहरण
import torch
import pandas as pd
from sklearn.preprocessing import LabelEncoder, MinMaxScaler
# Step 1: Raw Data
data = pd.DataFrame({
'Age': [25, 35, 45],
'Salary': [30000, 45000, 60000],
'Job': ['Yes', 'No', 'Yes'],
'Approved': [1, 0, 1]
})
# Step 2: Encode categorical feature
le = LabelEncoder()
data['Job'] = le.fit_transform(data['Job'])
# Step 3: Scaling
scaler = MinMaxScaler()
data[['Age', 'Salary']] = scaler.fit_transform(data[['Age', 'Salary']])
# Step 4: Separate X and y
X = data[['Age', 'Salary', 'Job']].values
y = data['Approved'].values
# Step 5: Convert to tensors
X_tensor = torch.tensor(X, dtype=torch.float32)
y_tensor = torch.tensor(y, dtype=torch.float32).unsqueeze(1)
print("Features:\n", X_tensor)
print("Labels:\n", y_tensor)
🔚 Summary Table
Component | Description |
---|---|
Missing Handling | NaN या null को mean, median या drop से ठीक करना |
Encoding | LabelEncoder, OneHotEncoder आदि का उपयोग |
Scaling | MinMaxScaler, StandardScaler |
Feature Creation | नए meaningful features generate करना |
Feature Selection | जरूरी features चुनना (correlation, RFE) |
Dimensionality Reduce | PCA, AutoEncoder, UMAP, t-SNE आदि |
PyTorch Integration | NumPy arrays → torch.tensor में बदलना |
📝 Practice Questions:
- PyTorch में
MinMaxScaler
औरLabelEncoder
का क्या उपयोग है? - Feature Creation और Feature Selection में क्या अंतर है?
- Normalization और Standardization में क्या फ़र्क है?
- Dimensionality Reduction कब ज़रूरी होता है?
- PyTorch में NumPy array को tensor में कैसे बदला जाता है?