← Back to ML
🤖 ML

Session 9 - Preprocessing Data Scaling

📅 May 09, 2026

Sklearn Preprocessing 

७ वटा tools — के गर्छ, किन गर्छ, कहिले गर्ने

⚖ Scalers — Numeric Data को Scale मिलाउन

StandardScaler Scaler

के गर्छ: Data लाई mean = 0 र standard deviation = 1 बनाउँछ। Z-score normalization पनि भनिन्छ।

x_new = (x − mean) / std

किन use गर्ने: धेरै ML algorithms लाई features एउटै scale मा चाहिन्छ, नत्र ठूलो value भएको feature ले dominate गर्छ।

कहिले use गर्ने:

Linear Regression Logistic Regression SVM Neural Network PCA

⚠ Outlier धेरै भए — RobustScaler बेस्ट हुन्छ

MinMaxScaler Scaler

के गर्छ: सबै values लाई fixed range — default [0, 1] — मा ल्याउँछ। Range आफैँ set गर्न पनि मिल्छ।

x_new = (x − min) / (max − min)

किन use गर्ने: जब data bounded range मा राख्नु पर्छ, जस्तै image pixels (0–255 → 0–1)।

कहिले use गर्ने:

Image data Neural Network KNN Bounded range चाहिएमा

⚠ एउटा outlier ले पूरै range बिगार्छ — Outlier भएमा नगर्नु

RobustScaler Scaler

के गर्छ: Mean को सट्टा median र std को सट्टा IQR (Q1–Q3) use गर्छ। Outlier लाई ignore गर्छ।

x_new = (x − median) / IQR

किन use गर्ने: StandardScaler मा outlier ले mean/std biased बनाउँछ। यसले त्यो समस्या हटाउँछ।

कहिले use गर्ने:

Outlier धेरै छ Medical data Financial data Real-world messy data

✓ Outlier भएको data मा सबैभन्दा राम्रो choice

🔧 Transformers — Data को रूप बदल्न

Binarizer Transformer

के गर्छ: एउटा threshold दिने — त्यो भन्दा माथि भए 1, तल वा बराबर भए 0। Continuous → Binary।

x_new = 1 यदि x > threshold, नत्र 0

किन use गर्ने: Exact value होइन, उपस्थिति/अनुपस्थिति मात्र जानकारी चाहिएमा। जस्तै: पानी पर्‍यो कि परेन।

कहिले use गर्ने:

Text feature (word छ/छैन) Image thresholding Binary classification prep
Normalizer Transformer

के गर्छ: प्रत्येक row (sample) को length = 1 बनाउँछ। Column होइन, row normalize गर्छ — यो अरूभन्दा फरक छ।

x_new = x / ||x||  (L2 norm by default)

किन use गर्ने: Magnitude होइन, direction मात्र महत्त्वपूर्ण भएमा। Text similarity, document comparison मा काम लाग्छ।

कहिले use गर्ने:

NLP / TF-IDF Cosine similarity KNN, Clustering

⚠ यसले column होइन, row normalize गर्छ — बिर्सनु हुँदैन

🏷 Encoders — Category लाई Number मा बदल्न

OneHotEncoder Encoder

के गर्छ: Categorical column लाई binary columns मा फर्काउँछ। प्रत्येक category को लागि नयाँ column — एउटामा 1, बाँकीमा 0।

रातो → [1,0,0]  |  हरियो → [0,1,0]  |  नीलो → [0,0,1]

किन use गर्ने: Categories बिच कुनै order हुँदैन (रातो > हरियो भन्न मिल्दैन)। LabelEncoder use गर्दा model ले गलत order सिक्छ।

कहिले use गर्ने:

Nominal data (order छैन) रङ, शहर, देश Feature columns (X) Linear / Tree models

⚠ Categories धेरै भए columns विस्फोट हुन्छ (high cardinality problem)

LabelEncoder Encoder

के गर्छ: Categorical labels लाई 0, 1, 2, 3... जस्ता integers मा बदल्छ।

बिरालो → 0  |  कुकुर → 1  |  माछा → 2

किन use गर्ने: Target/output column (y) मा number चाहिन्छ। Feature column मा ordinal data (order भएको) मा मात्र use गर्नु।

कहिले use गर्ने:

Target column (y) encode Ordinal data (सानो<मध्यम<ठूलो) Random Forest XGBoost

⚠ Feature column मा nominal data मा नगर् — model ले गलत order सिक्छ

⚡ छिटो Guide — कहिले कुन?

Tool कहिले? Use Case
StandardScaler Outlier कम छ Linear/Logistic Regression, SVM, Neural Net, PCA
MinMaxScaler Range [0,1] चाहिन्छ Image data, Neural Network, KNN
RobustScaler Outlier धेरै छ Medical / Financial / Real-world data
Binarizer हो/होइन मात्र Word presence, image thresholding
Normalizer Row direction चाहिन्छ NLP, TF-IDF, Cosine similarity
OneHotEncoder Category, order छैन रङ, देश, शहर — feature columns (X)
LabelEncoder Target column वा ordinal y column, सानो/मध्यम/ठूलो, Random Forest

💡 Tree-based models लाई scaling चाहिँदैन

Random Forest, XGBoost, Decision Tree — यिनीहरूलाई StandardScaler / MinMaxScaler को आवश्यकता छैन। Encoder मात्र चाहिन्छ।

⚠ सबैभन्दा महत्त्वपूर्ण नियम — Data Leakage

fit() सधैँ training data मात्र मा गर्ने। Test data मा transform() मात्र। नत्र data leakage हुन्छ र model ले cheat गर्छ।

📓

Jupyter Notebook

⬇ Download .ipynb

← Back to ML