Standardizasyon & Min-Max: Sayıları Aynı Ölçeğe Getirme
Elmaları ve filleri aynı terazide tartmak! 🍎⚖️🐘
Farklı ölçekteki sayıları modelin anlayacağı ortak bir dile çevirin.
Neden Ölçeklendirme Gerekli?
⚖️ Problem: Büyük Sayılar Küçük Sayıları Ezer
Modeliniz metrekare (50-200) ve oda sayısı (1-6) gibi farklı ölçekteki sayıları aynı anda değerlendirirken, büyük sayılar küçük sayıların etkisini maskeler. Bu da modelin yanlış öğrenmesine yol açar.
🎮 Hemen Deneyin: Hangi Ölçeklendirme Yöntemi?
Ortalama: 0, Standart Sapma: 1
Minimum: 0, Maksimum: 1
Standardizasyon Seçildi
Formül: (Değer - Ortalama) / Standart Sapma
En iyi kullanım: Lineer modeller, Lasso/Ridge, KNN, PCA
⚠️ Kritik Kural: Train/Test Ayrımı
Ölçeklendirme parametreleri sadece eğitim verisi üzerinden hesaplanır ve aynı parametreler test verisine uygulanır. Aksi takdirde "veri sızıntısı" olur ve model gerçek performansını göstermez!
✅ Hangisini Kullanmalıyım?
- Lineer Regresyon, Lasso, Ridge
- K-Nearest Neighbors (KNN)
- Principal Component Analysis (PCA)
- Aykırı değerler varsa
- Yapay Sinir Ağları
- Görüntü işleme (piksel değerleri)
- Oranlar ve yüzdeler
- Sabit aralık gerektiğinde
🔬 Gerçek Veri ile Deneyin
📊 Sonuçları Karşılaştırın
Önce (Ham Veri)
Sonra (Ölçeklendirilmiş)
📈 İstatistikler (Önce)
–
📉 İstatistikler (Sonra)
–
Dağılım Grafiği (Önce)
Dağılım Grafiği (Sonra)
💻 Gerçek Kod Örneği
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, MinMaxScaler
from sklearn.pipeline import Pipeline
from sklearn.linear_model import LinearRegression
# Ölçeklendirilecek sayısal sütunlar
num_cols = ["metrekare", "oda_sayisi", "bina_yasi"]
# Standardizasyon seçeneği
scale = StandardScaler() # veya MinMaxScaler()
# Tüm ön işlemleri birleştir
preprocess = ColumnTransformer(
transformers=[("num", scale, num_cols)],
remainder="drop" # Diğer sütunları at (hedef Y'yi asla ölçekleme!)
)
# Model pipeline'ı oluştur
pipe = Pipeline([
("prep", preprocess),
("model", LinearRegression())
])
# ⚠️ ÖNEMLİ: Ölçeklendirmeyi sadece eğitim verisiyle fit et!
# X_train, X_test, y_train, y_test = train_test_split(X, y)
# pipe.fit(X_train, y_train) # ← Sadece burada ölçek parametreleri hesaplanır
# y_pred = pipe.predict(X_test) # ← Test verisi eğitim parametreleriyle ölçeklenir