CodeBlanks Logo Icon CodeBlanks

Model eğitimi

Lineer regresyon modelini eğitirsin.

Model eğitimi

Bir temel çizgi ve iki aday eğiteceğiz: ortalamayı tahmin eden DummyRegressor, LinearRegression ve hafif düzenlileştirilmiş Ridge:

from sklearn.dummy import DummyRegressor
from sklearn.linear_model import LinearRegression, Ridge
adaylar = {
    "ortalama": DummyRegressor(),
    "dogrusal": LinearRegression(),
    "ridge": Ridge(alpha=1.0),
}

Ridge, büyük ağırlıkları cezalandırarak modeli gürültüye karşı daha kararlı yapar; ayrıntısını orta seviyede göreceksin.

Çapraz doğrulamayla seçim

Adayları test kümesine bakmadan, eğitim kümesinde 5 katlı doğrulamayla karşılaştırırız. Ölçüt olarak MAE kullanacağız:

for ad, m in adaylar.items():
    s = -cross_val_score(m, X_train, y_train, cv=5,
                         scoring="neg_mean_absolute_error")
    print(ad, s.mean().round(1))

Başa konan eksi işareti, scikit-learn'ün negatif verdiği hatayı yeniden pozitif yapar. Bu veride özellikler çok küçük ölçekli olduğu için alpha=1.0 fazla ceza verir ve Ridge geride kalır; sonraki adımlarda en düşük MAE'yi veren LinearRegression ile devam edeceğiz.

Uygulama Adayları doğrula

Üç adayı eğitim kümesinde 5 katlı doğrulamayla MAE üzerinden karşılaştır. Her satırda adı ve ortalama MAE'yi round(..., 1) ile yazdır.

Başlangıç kodu

model.py
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.model_selection import cross_val_score
from sklearn.dummy import DummyRegressor
from sklearn.linear_model import LinearRegression, Ridge

adaylar = {"ortalama": DummyRegressor(), "dogrusal": LinearRegression(), "ridge": Ridge(alpha=1.0)}

# buraya yaz

Örnek çözüm

model.py
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.model_selection import cross_val_score
from sklearn.dummy import DummyRegressor
from sklearn.linear_model import LinearRegression, Ridge

adaylar = {"ortalama": DummyRegressor(), "dogrusal": LinearRegression(), "ridge": Ridge(alpha=1.0)}

for ad, m in adaylar.items():
    s = -cross_val_score(m, X_train, y_train, cv=5, scoring="neg_mean_absolute_error")
    print(ad, round(s.mean(), 1))

Beklenen çıktı

ortalama 67.4
dogrusal 44.0
ridge 49.9

Soru ve cevaplar

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

1 <code>DummyRegressor()</code> varsayılan olarak ne tahmin eder?

  • Rastgele değer
  • Medyanı
  • Eğitim hedefinin ortalamasını Doğru cevap
  • Sıfır

Açıklama: strategy="mean" varsayılandır; R² skoru 0 civarı çıkar.

2 Ölçüt olarak negatif MAE kullan.

Soru
cross_val_score(m, X_train, y_train, cv=5, scoring=____)
Cevap
cross_val_score(m, X_train, y_train, cv=5, scoring="neg_mean_absolute_error")

Açıklama: Hata metrikleri "neg_" ön ekiyle verilir.

3 Modelleri eşleştir.

Kavram Anlamı
DummyRegressor Temel çizgi
LinearRegression Sade doğrusal model
Ridge Cezalı doğrusal model
neg_mean_absolute_error CV için MAE

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