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
Bilgisayar Bunu Şöyle Görür:
Nasıl Çalışır? Her kategori için ayrı bir sütun oluşturulur. İlgili kategori için 1, diğerleri için 0 yazılır. Buna One-Hot Encoding denir.
⚠️ Ö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
Ü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())
])