Data & Feature Engineering in Machine Learning

अब हम 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 CleaningMissing values, Outliers हटाना
EncodingCategorical डेटा को संख्यात्मक बनाना
Scalingफीचर्स को समान स्केल पर लाना
Feature Creationनए सार्थक फीचर्स बनाना
Feature Selectionज़रूरी फीचर्स चुनना
Dimensionality Reductionअनावश्यक फीचर्स घटाना

🎯 निष्कर्ष / Conclusion:

“Garbage In → Garbage Out”
अगर डेटा और फीचर सही नहीं हैं, तो मॉडल का परफॉर्मेंस अच्छा नहीं होगा। इसलिए ML की सफलता का 70% हिस्सा डेटा और फीचर इंजीनियरिंग पर निर्भर करता है

Data Preprocessing + Feature Engineering Example

हम एक सिंपल टेबल डेटा लेंगे (उम्र, वेतन, जॉब टाइप), और इसे PyTorch में टेंसर बनाकर स्केल, एनकोड और ट्रेनिंग के लिए तैयार करेंगे।


📌 उदाहरण डेटा:

उम्र (Age)वेतन (Salary)नौकरी (Job)
2530000Yes
3545000No
4560000Yes

🔧 कोड:

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 1DataFrame बनाया
Step 2‘Job’ कॉलम को Encode किया
Step 3Features को Normalize किया
Step 4Features और Labels अलग किए
Step 5NumPy से PyTorch Tensor में बदला

📘 यह कोड खास तौर पर उपयोगी होगा:

  • Tabular Dataset पर Deep Learning Model चलाने से पहले
  • PyTorch में MLP (Multi-layer Perceptron) ट्रेन करने के लिए डेटा तैयार करने में

🔷 🔹 Why Data & Feature Engineering?

ReasonBenefit
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

ComponentDescription
Missing HandlingNaN या null को mean, median या drop से ठीक करना
EncodingLabelEncoder, OneHotEncoder आदि का उपयोग
ScalingMinMaxScaler, StandardScaler
Feature Creationनए meaningful features generate करना
Feature Selectionजरूरी features चुनना (correlation, RFE)
Dimensionality ReducePCA, AutoEncoder, UMAP, t-SNE आदि
PyTorch IntegrationNumPy arrays → torch.tensor में बदलना

📝 Practice Questions:

  1. PyTorch में MinMaxScaler और LabelEncoder का क्या उपयोग है?
  2. Feature Creation और Feature Selection में क्या अंतर है?
  3. Normalization और Standardization में क्या फ़र्क है?
  4. Dimensionality Reduction कब ज़रूरी होता है?
  5. PyTorch में NumPy array को tensor में कैसे बदला जाता है?