Kategorik özellikler
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 84/112
- 5 dk
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
from sklearn.preprocessing import OrdinalEncoder
egitim = [["lisans"], ["lise"], ["doktora"], ["lisans"]]
# buraya yazÖrnek çözüm
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.
enc = OneHotEncoder(handle_unknown=____)
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 |