Lesson 13 — Intermediate

FEATURES KAM KARO,
MODEL FAST BANAO.

Jab bahut saare features hain toh model slow hota hai aur Curse of Dimensionality aata hai. PCA se important features select karte hain — bina information loss ke dimensions reduce karte hain. Yeh technique data science ka shortcut hai jab data bahut bada ho.

? 22 min✓ Intermediate✓ Prerequisite: Time Series

WHY: Dimensionality Reduction kyun zaroori hai?

Socho tumhare paas 1000 columns hain aur sirf 100 rows. Model ko train karna hai — lekin 1000 features ke saath model confuse ho jaata hai. Yeh problem hai Curse of Dimensionality. Zyada features = zyada computation time, overfitting ka risk, aur model samajh nahi paata kaunsa feature important hai. PCA (Principal Component Analysis) yeh solve karta hai — naye features banata hai jo old features ka compressed version hai, lekin zyada information retain karta hai.

PCA

Principal Component Analysis — old features se naye features banata hai jo unka linear combination hai. Pehla component sabse zyada variance capture karta hai, doosra second-most, aur so on. 1000 features ko 10-20 mein compress kar sakta hai.

VARIANCE

Information retained ka measure hai. Agar koi component 30% variance capture karta hai toh matlab usne data ki 30% information store kar li. Total variance sab components ka sum 100% hona chahiye.

COMPONENTS

Naye features jo PCA banata hai. Har component old features ka weighted combination hai. Pehla component sabse important hai, doosra usse kam, aur aise. PCA ke baad original features khatam ho jaate hain.

SCREE PLOT

Ek graph jo dikhata hai kitna variance har component capture kar raha hai. Isse decide karte hain kitne components rakhne hain. "Elbow" point tak components rakhna best hota hai — uske baad gain bahut kam hota hai.

HOW: PCA with code examples

PCA step-by-step: pehle data scale karo, phir PCA fit karo, aur phir naye components lo. Scree plot se decide karo kitne components rakhne hain.

1. Basic PCA — 10 features ko 3 mein reduce karo

Pehle high-dimensional data banao, scale karo, phir PCA lagao. Print karo original shape, reduced shape, aur kitna variance capture hua.

python
from sklearn.decomposition import PCA
from sklearn.preprocessing import StandardScaler
import numpy as np

# High dimensional data
X = np.random.rand(100, 10) # 100 samples, 10 features

# Scale karo — PCA ke liye scaling zaroori hai
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# PCA lagao — 3 components tak reduce karo
pca = PCA(n_components=3)
X_pca = pca.fit_transform(X_scaled)

print(f"Original: {X.shape}, Reduced: {X_pca.shape}")
# Original: (100, 10), Reduced: (100, 3)

print(f"Explained variance: {pca.explained_variance_ratio_}")
# Har component kitna variance capture karta hai

print(f"Total variance: {sum(pca.explained_variance_ratio_):.2%}")
# Total information retained
Mental model: PCA jaise tum 10 kitaabon ko 3 summary pages mein compress karo — 3 pages mein se ek sabse important hai, doosra kam, teesra sabse kam. Scree plot se decide karo kitne pages rakhne hain.

2. Scree Plot — Kitne components rakhne hain

Full PCA fit karo aur cumulative variance plot karo. Jahan curve flatten ho jaaye — wahan se components ka gain bahut kam hota hai. Yeh "elbow" point hai.

python
import matplotlib.pyplot as plt

# Full PCA — saare components lo
pca_full = PCA().fit(X_scaled)

# Cumulative variance plot — scree plot
plt.figure(figsize=(8, 5))
plt.plot(range(1, 11), np.cumsum(pca_full.explained_variance_ratio_), 'bo-')
plt.xlabel('Number of Components')
plt.ylabel('Cumulative Explained Variance')
plt.title('Scree Plot — Kitne components rakhne hain?')
plt.axhline(y=0.95, color='r', linestyle='--', label='95% variance')
plt.legend()
plt.grid(True)
plt.show()

# 95% variance chahiye toh kitne components?
cumsum = np.cumsum(pca_full.explained_variance_ratio_)
n_components_95 = np.argmax(cumsum >= 0.95) + 1
print(f"95% variance ke liye {n_components_95} components chahiye")

3. PCA on real dataset — Breast Cancer

Sklearn ka built-in dataset use karo. Original 30 features ko 2 mein reduce karo aur visualize karo — classes kitni achhi se separate ho rahi hain.

python
from sklearn.datasets import load_breast_cancer
import matplotlib.pyplot as plt

# Real dataset — 30 features
data = load_breast_cancer()
X, y = data.data, data.target
print(f"Original shape: {X.shape}") # (569, 30)

# Scale
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# PCA se 2 components banao
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)
print(f"Reduced shape: {X_pca.shape}") # (569, 2)
print(f"Variance retained: {sum(pca.explained_variance_ratio_):.2%}")

# Visualize karo — 2D plot
plt.figure(figsize=(8, 6))
for label in [0, 1]:
 mask = y == label
 plt.scatter(X_pca[mask, 0], X_pca[mask, 1], 
 label=data.target_names[label], alpha=0.7)
plt.xlabel(f'PC1 ({pca.explained_variance_ratio_[0]:.1%} variance)')
plt.ylabel(f'PC2 ({pca.explained_variance_ratio_[1]:.1%} variance)')
plt.title('Breast Cancer — PCA se 2D visualization')
plt.legend()
plt.show()

4. Choose components — Variance threshold method

Koi specific percentage nahi chahiye toh _components` mein float daalo — 0.95 matlab 95% variance retain karo. PCA automatically decide karega kitne components chahiye.

python
# 95% variance retain karo — PCA khud decide karega
pca_95 = PCA(n_components=0.95)
X_reduced = pca_95.fit_transform(X_scaled)

print(f"Components chosen: {pca_95.n_components_}")
# Kitne components automatically select hue
print(f"Variance retained: {sum(pca_95.explained_variance_ratio_):.2%}")
# ~95% ya usse zyada

# Individual component contribution
for i, var in enumerate(pca_95.explained_variance_ratio_):
 print(f"PC{i+1}: {var:.2%}")

Try it: PCA practice karo

Neeche ka editor Python jaisa hai. Yahan PCA code likho aur "Run Python" dabao. Screen par output dikhenge — yeh browser-based execution hai, real Python chalega.

Python playgroundPCA techniques try karo
Code ko apni info se update karke run karein

Quick check

PCA use karo aur data ko 3 components tak reduce karo. n_components=3 set karke X_pca banao.

Pehle pca = PCA(n_components=3) banao, phir X_pca = pca.fit_transform(X_scaled) likho.

Dimensionality Reduction tips

Common Dimensionality Reduction mistakes

Dimensionality Reduction clear?

Ab SQL for Data Science par chalo — data manipulate karna seekho SQL queries se. Database se data nikalna, join karna, aur aggregate karna — yeh sab seekhenge.