Sayısal özellikler
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 85/112
- 5 dk
Sayısal özellikler ölçeklendirilerek model performansı artırılır.
Sayısal dönüşümler
Sayısal özellikler de dönüştürülerek daha kullanışlı hale getirilebilir. Gelir gibi sağa çarpık dağılımlarda logaritma uç değerleri sıkıştırır:
gelir = np.array([20, 25, 30, 40, 500])
print(np.log1p(gelir).round(2)) # [3.04 3.26 3.43 3.71 6.22]np.log1p(x), log(1 + x) demektir ve 0 değerinde de güvenle çalışır.
Gruplama ve polinom
Sürekli bir değer aralıklara bölünebilir (KBinsDiscretizer, np.digitize). Doğrusal modele eğri ilişki öğretmek için PolynomialFeatures kareler ve çarpımlar ekler:
yas = np.array([15, 25, 45, 70])
print(np.digitize(yas, [18, 40, 65])) # [0 1 2 3] genç, yetişkin, orta, yaşlı
from sklearn.preprocessing import PolynomialFeatures
print(PolynomialFeatures(2, include_bias=False).fit_transform([[2, 3]]))
# [[2. 3. 4. 6. 9.]] x1, x2, x1², x1·x2, x2²Polinom özellik sayısı hızla büyür; derece 2 ya da 3 genellikle yeterlidir.
Uygulama Eğriyi doğrusal modele öğret
y = x² ilişkisinde düz LinearRegression ve PolynomialFeatures(2) ile genişletilmiş bir LinearRegression eğit. İkisinin R² skorunu (score) round(..., 3) ile alt alta yazdır.
Başlangıç kodu
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
X = np.arange(-5, 6).reshape(-1, 1)
y = X.ravel() ** 2
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
X = np.arange(-5, 6).reshape(-1, 1)
y = X.ravel() ** 2
duz = LinearRegression().fit(X, y)
Xp = PolynomialFeatures(2).fit_transform(X)
egri = LinearRegression().fit(Xp, y)
print(round(duz.score(X, y), 3))
print(round(egri.score(Xp, y), 3))Beklenen çıktı
0.0 1.0
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Logaritma dönüşümü hangi tür dağılımda en çok işe yarar?
- Sağa çarpık, uzun kuyruklu Doğru cevap
- Simetrik
- Kategorik
- Negatif değerli
Açıklama: Büyük değerleri sıkıştırıp dağılımı daha simetrik yapar.
2 Değerleri sınırlara göre gruplara ayır.
grup = np.____(yas, [18, 40, 65])
grup = np.digitize(yas, [18, 40, 65])
Açıklama: digitize her değerin hangi aralığa düştüğünün indeksini verir.
3 Dönüşümleri amaçlarıyla eşleştir.
| Kavram | Anlamı |
|---|---|
np.log1p |
Çarpıklığı azaltır |
np.digitize |
Aralıklara böler |
PolynomialFeatures |
Eğri ilişki ekler |
x1·x2 |
Etkileşim özelliği |