Meydan okuma 1
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 109/112
- 8 dk
ML temellerini birleştirerek veri analizi yaparsın.
Meydan okuma 1: elle doğrusal regresyon
Bu meydan okumada scikit-learn kullanmadan tek değişkenli doğrusal regresyonu NumPy ile çözeceksin. En küçük kareler çözümü kapalı biçimdedir:
w = ((x - x.mean()) * (y - y.mean())).sum() / ((x - x.mean()) ** 2).sum()
b = y.mean() - w * x.mean()Eğim, x ile y'nin birlikte değişiminin x'in kendi değişimine oranıdır; kesişim doğruyu ortalamalar noktasından geçirir.
Uygulama Kendi regresyonun
w ve b'yi formülle hesapla, round(..., 3) ile aynı satırda yazdır. Ardından sonucu LinearRegression ile doğrula: np.isclose(w, m.coef_[0]) değerini yazdır.
Başlangıç kodu
import numpy as np
from sklearn.linear_model import LinearRegression
x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
y = np.array([2.9, 5.1, 7.0, 8.8, 11.2, 13.1])
# buraya yazÖrnek çözüm
import numpy as np
from sklearn.linear_model import LinearRegression
x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
y = np.array([2.9, 5.1, 7.0, 8.8, 11.2, 13.1])
w = ((x - x.mean()) * (y - y.mean())).sum() / ((x - x.mean()) ** 2).sum()
b = y.mean() - w * x.mean()
print(round(w, 3), round(b, 3))
m = LinearRegression().fit(x.reshape(-1, 1), y)
print(np.isclose(w, m.coef_[0]))Beklenen çıktı
2.031 0.907 True
Uygulama R²'yi elle hesapla
Bulduğun doğruyla tahminleri hesapla. R² = 1 - SS_res / SS_tot formülüyle (SS_res = Σ(y - ŷ)², SS_tot = Σ(y - ȳ)²) R²'yi round(..., 4) ile yazdır.
Başlangıç kodu
import numpy as np
x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
y = np.array([2.9, 5.1, 7.0, 8.8, 11.2, 13.1])
w = ((x - x.mean()) * (y - y.mean())).sum() / ((x - x.mean()) ** 2).sum()
b = y.mean() - w * x.mean()
# buraya yazÖrnek çözüm
import numpy as np
x = np.array([1.0, 2.0, 3.0, 4.0, 5.0, 6.0])
y = np.array([2.9, 5.1, 7.0, 8.8, 11.2, 13.1])
w = ((x - x.mean()) * (y - y.mean())).sum() / ((x - x.mean()) ** 2).sum()
b = y.mean() - w * x.mean()
p = w * x + b
ss_res = ((y - p) ** 2).sum()
ss_tot = ((y - y.mean()) ** 2).sum()
print(round(1 - ss_res / ss_tot, 4))Beklenen çıktı
0.9987
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bu formülle bulunan doğru her zaman hangi noktadan geçer?
- (x en büyüğü, y en büyüğü)
- (x ortalaması, y ortalaması) Doğru cevap
- (0, 0)
- İlk veri noktası
Açıklama: b = ȳ - w·x̄ olduğundan x = x̄ için tahmin ȳ'dir.
2 Kesişimi hesapla.
b = y.mean() - w * ____
b = y.mean() - w * x.mean()
Açıklama: Kesişim, ortalamalar noktasından geçme koşulundan gelir.
3 Parçaları eşleştir.
| Kavram | Anlamı |
|---|---|
x - x.mean() |
Merkezlenmiş x |
pay |
Birlikte değişim |
payda |
x'in değişimi |
b |
Kesişim |