CodeBlanks Logo Icon CodeBlanks

Kategorik özellikler

Kategorik özellikler OneHotEncoder ile ikili vektörlere dönüştürülür.

Kategorik özellikler

Şehir, renk, ürün türü gibi sınırlı değerli metin sütunları kategoriktir. Sırasız kategoriler one-hot ile, sıralı olanlar (küçük < orta < büyük) OrdinalEncoder ile kodlanır:

from sklearn.preprocessing import OneHotEncoder, OrdinalEncoder
sehir = [["Ankara"], ["İzmir"], ["Ankara"]]
print(OneHotEncoder().fit_transform(sehir).toarray())
boy = [["küçük"], ["büyük"], ["orta"]]
oe = OrdinalEncoder(categories=[["küçük", "orta", "büyük"]])
print(oe.fit_transform(boy).ravel())   # [0. 2. 1.]

categories verilmezse OrdinalEncoder alfabetik sıra kullanır; bu çoğu zaman anlamlı sıra değildir.

Bilinmeyen kategoriler ve seyrek değerler

Üretimde yeni kategoriler kaçınılmazdır; handle_unknown="ignore" bunları güvenle karşılar. Çok sayıda nadir kategori varsa min_frequency onları tek bir "seyrek" sütununda toplar:

enc = OneHotEncoder(handle_unknown="ignore")
enc.fit([["Ankara"], ["İzmir"]])
print(enc.transform([["Bursa"]]).toarray())   # [[0. 0.]]

Binlerce farklı değeri olan sütunlarda (ürün kodu gibi) one-hot çok geniş matrisler üretir; bu durumda hedef kodlama gibi yöntemler düşünülür.

Uygulama Sıralı kodla

egitim sütununu OrdinalEncoder(categories=[["lise", "lisans", "doktora"]]) ile kodla ve sonucu ravel() ile yazdır.

Başlangıç kodu

model.py
from sklearn.preprocessing import OrdinalEncoder

egitim = [["lisans"], ["lise"], ["doktora"], ["lisans"]]

# buraya yaz

Örnek çözüm

model.py
from sklearn.preprocessing import OrdinalEncoder

egitim = [["lisans"], ["lise"], ["doktora"], ["lisans"]]

oe = OrdinalEncoder(categories=[["lise", "lisans", "doktora"]])
print(oe.fit_transform(egitim).ravel())

Beklenen çıktı

[1. 0. 2. 1.]

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Eğitimde görülmemiş bir şehir test verisinde gelirse OneHotEncoder varsayılan olarak ne yapar?

  • En sık şehri kullanır
  • Hata verir Doğru cevap
  • Yeni sütun açar
  • Sıfırlar

Açıklama: handle_unknown="ignore" verilirse bilinmeyen değer tüm sıfır satırı olur.

2 Bilinmeyen kategorileri hatasız karşıla.

Soru
enc = OneHotEncoder(handle_unknown=____)
Cevap
enc = OneHotEncoder(handle_unknown="ignore")

Açıklama: "ignore" bilinmeyen değeri sıfır vektörü yapar.

3 Kodlamaları eşleştir.

Kavram Anlamı
Renk One-hot
Beden S/M/L Sıralı kodlama
Yeni şehir handle_unknown
Nadir kategoriler min_frequency

Başlangıç bölümündeki tüm dersler