Makine Öğrenmesi
Özellik çıkarımı
Yeni özellikler türetirsin.
Proje: konut fiyatı
Bu projede 500 konutun fiyatını tahmin edeceğiz. Özellikler: metrekare, oda sayısı, bina yaşı, kat, merkeze uzaklık ve beş anlamsız gürültü sütunu. Projenin odağı özellik mühendisliği ve seçimidir.
X = np.column_stack([m2, oda, yas, kat, merkez_km, gurultu])
print(X.shape) # (500, 10)
Gerçek projelerde hangi sütunun gürültü olduğu bilinmez; burada bilerek ekledik ki seçim yöntemlerinin onları bulup bulmadığını görebilelim.
Özellik çıkarımı
Alan bilgisinden iki yeni özellik türetiyoruz: oda başına metrekare ve merkeze uzaklığın logaritması (ilk kilometreler son kilometrelerden daha çok fark yaratır):
m2_oda = m2 / oda
log_merkez = np.log1p(merkez_km)
X2 = np.column_stack([X, m2_oda, log_merkez])
print(X2.shape) # (500, 12)
Türetilmiş özelliklerin işe yarayıp yaramadığı yine doğrulamayla ölçülür; sezgi bir hipotezdir, sonuç değil.
Uygulama Özellikleri türet
m2 / oda ve np.log1p(merkez_km) sütunlarını X'e ekleyerek X2'yi oluştur. X2.shape değerini, ardından iki yeni sütunun ortalamalarını np.round(..., 2) ile yazdır.
Örnek çözümü göster
import numpy as np
rng = np.random.default_rng(11)
n = 500
m2 = rng.uniform(40, 200, n)
oda = np.clip(np.round(m2 / 35 + rng.normal(0, 0.7, n)), 1, 6)
yas = rng.uniform(0, 40, n)
kat = rng.integers(0, 15, n)
merkez_km = rng.uniform(0.5, 25, n)
gurultu = rng.normal(size=(n, 5))
fiyat = 20 * m2 + 150 * m2 / oda - 2500 * np.log1p(merkez_km) - 40 * yas + 60 * kat + rng.normal(0, 300, n)
X = np.column_stack([m2, oda, yas, kat, merkez_km, gurultu])
X2 = np.column_stack([X, m2 / oda, np.log1p(merkez_km)])
print(X2.shape)
print(np.round(X2[:, -2:].mean(axis=0), 2))
Kendini test et
-
Oda başına metrekare neden yararlı bir türetilmiş özellik olabilir?
- Satır sayısını artırır
- Zorunludur
- Evin ferahlığını tek sayıda anlatır
- Gürültüyü azaltır
Cevabı göster
Evin ferahlığını tek sayıda anlatır — Aynı metrekarede az oda daha geniş odalar demektir; ham iki sütun bunu doğrudan söylemez.
-
Yeni sütunları özellik matrisine ekle.
X2 = np.____([X, m2_oda, log_merkez])
Cevabı göster
X2 = np.column_stack([X, m2_oda, log_merkez])
-
Özellikleri eşleştir.
- m2
- Ham alan
- m2 / oda
- Ferahlık
- log1p(merkez_km)
- Azalan etkili uzaklık
- gurultu
- Anlamsız sütunlar
Sıradaki ders: Özellik seçimi