← Modül 3

3.1. Kategorik Verilerin Sayısallaştırılması
MODÜL 3.1

One-Hot Encoding: Kategorik Verileri Sayısallaştırma

Bilgisayarlar metinleri anlamaz, sadece sayıları anlar! 🎨→🔢
Kategorik verileri modelin anlayacağı sayısal forma dönüştürün.

Neden One-Hot Encoding Gerekli?

📊 Problem: Bilgisayar Metinleri Anlamaz

Regresyon modelleri ve bilgisayarlar sadece sayısal değerlerle çalışabilir. "İstanbul", "Doğalgaz", "Merkez" gibi metin değerlerini doğrudan kullanamazsınız. Bu metinleri bilgisayarın anlayacağı sayısal forma çevirmemiz gerekir.

🎮 Hemen Deneyin: Kategorileri Sayılara Çevirin

🔴
Kırmızı
🔵
Mavi
🟢
Yeşil

⚠️ Önemli Kural: N-1 (Dummy Trap'tan Kaçının)

Eğer modelinizde sabit terim (intercept) varsa, tüm kategorileri eklemek "Dummy Trap" denen bir hataya yol açar. Bu yüzden bir kategoriyi referans olarak bırakırız. Örneğin: Kırmızı ve Mavi'yi ekleyip Yeşil'i referans olarak bırakabiliriz.

🔬 Gerçek Veri ile Deneyin

Aşağıdaki örnek veri setini kullanarak One-Hot Encoding'in nasıl çalıştığını gözlemleyin.

📊 Sonuç Tablosu

Önce (Ham Veri)

Sonra (Sayısallaştırılmış)

📈 Özellik Özeti

Önceki Kolon Sayısı
Yeni Dummy Sütun
Toplam Özellik

Üretilen Yeni Sütunlar

💻 Gerçek Kod Örneği

from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder, StandardScaler

# Kategorik ve sayısal sütunları ayır
num_cols = ["metrekare"]
cat_cols = ["semt", "isitma"]

# Tüm dönüşümleri birleştir
preprocess = ColumnTransformer(
    transformers=[
        ("num", StandardScaler(), num_cols),  # Sayısal sütunları ölçeklendir
        ("cat", OneHotEncoder(drop="first", handle_unknown="ignore"), cat_cols)  # Kategorikleri sayısallaştır
    ]
)

# Model pipeline'ında kullan
from sklearn.linear_model import LinearRegression
from sklearn.pipeline import Pipeline

model = Pipeline([
    ('preprocessor', preprocess),
    ('regressor', LinearRegression())
])
← Geri: Modül 3 İleri: 3.2 →