CodeBlanks Logo Icon CodeBlanks

Tahmin

Model ile tahmin yaparsın.

Tahmin

Seçilen modelle test kümesindeki hastalar için tahmin yaparız. Tahminleri gerçek değerlerle yan yana görmek, modelin hangi aralıkta zorlandığını gösterir:

p = model.predict(X_test)
for gercek, tahmin in zip(y_test[:5], p[:5]):
    print(f"{gercek:6.0f} {tahmin:8.1f}")

Doğrusal modeller uç değerleri ortalamaya doğru çekme eğilimindedir: çok yüksek ilerlemeyi olduğundan düşük tahmin eder.

Kalıntıları incelemek

Kalıntıların ortalaması 0'a yakın olmalı ve belirgin bir desen göstermemelidir. En büyük mutlak kalıntılar, modelin en çok yanıldığı hastalardır:

kalinti = y_test - p
print(kalinti.mean().round(1))
en_kotu = np.argsort(np.abs(kalinti))[-3:]
print(y_test[en_kotu], p[en_kotu].round(0))

np.argsort küçükten büyüğe sıralayan indeksleri verir; son üçü en büyük hatalardır.

Uygulama Tahmin ve kalıntı

model ile test tahminlerini al. İlk 3 tahmini np.round(..., 1) ile, ardından en büyük mutlak kalıntıyı round(..., 1) ile yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split

X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(X_train, y_train)

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split

X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(X_train, y_train)

p = model.predict(X_test)
print(np.round(p[:3], 1))
kalinti = y_test - p
print(round(np.abs(kalinti).max(), 1))

Beklenen çıktı

[238.5 248.9 164.1]
162.7

Soru ve cevaplar

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

1 Kalıntı (residual) nedir?

  • Test kümesinin boyutu
  • Gerçek değer eksi tahmin Doğru cevap
  • Tahminlerin ortalaması
  • Modelin ağırlığı

Açıklama: Kalıntı = y - ŷ; pozitifse model az, negatifse fazla tahmin etmiştir.

2 Mutlak kalıntıları küçükten büyüğe sıralayan indeksleri al.

Soru
sira = np.____(np.abs(kalinti))
Cevap
sira = np.argsort(np.abs(kalinti))

Açıklama: argsort değerleri değil indeksleri döndürür.

3 İfadeleri eşleştir.

Kavram Anlamı
y_test - p Kalıntılar
np.abs(kalinti) Mutlak hata
np.argsort(...)[-3:] En büyük üç hata
kalinti.mean() Sistematik sapma

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