CodeBlanks Logo Icon CodeBlanks

Model eğitimi

KNN modelini eğitirsin.

Pipeline ile model

Ölçekleme ve modeli ayrı ayrı yönetmek yerine make_pipeline ile tek bir nesne yaparız. fit çağrısı ölçekleyiciyi yalnızca eğitim verisinde öğrenir; predict aynı dönüşümü test verisine otomatik uygular:

from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
model = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=5))
model.fit(X_train, y_train)

Böylece test verisinin ortalaması eğitime sızamaz; veri sızıntısı yapısal olarak engellenir.

Ölçeksiz ve ölçekli karşılaştırma

Ölçeklemenin etkisini görmek için aynı KNN'i bir de ölçeksiz eğit:

ham = KNeighborsClassifier(n_neighbors=5).fit(X_train, y_train)
print(ham.score(X_test, y_test))     # proline baskın: düşük
print(model.score(X_test, y_test))   # ölçekli: belirgin yüksek

Ölçeksiz KNN pratikte yalnızca en büyük birimli özelliğe (proline) bakar; ölçekleme tüm özelliklerin oy kullanmasını sağlar.

Uygulama Modeli eğit

Ölçeksiz bir KNeighborsClassifier(n_neighbors=5) ve make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=5)) eğit. İkisinin test doğruluğunu round(..., 3) ile alt alta yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split

X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42, stratify=y)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split

X, y = load_wine(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42, stratify=y)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

ham = KNeighborsClassifier(n_neighbors=5).fit(X_train, y_train)
model = make_pipeline(StandardScaler(), KNeighborsClassifier(n_neighbors=5)).fit(X_train, y_train)
print(round(ham.score(X_test, y_test), 3))
print(round(model.score(X_test, y_test), 3))

Beklenen çıktı

0.778
0.933

Soru ve cevaplar

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

1 Pipeline'da <code>predict(X_test)</code> çağrılınca ölçekleyici ne yapar?

  • Hata verir
  • Eğitimde öğrendiği ortalama ve std ile dönüştürür Doğru cevap
  • Test verisinde yeniden fit eder
  • Hiçbir şey yapmaz

Açıklama: Pipeline, test aşamasında yalnızca transform çağırır.

2 Ölçekleyici ve modeli tek nesnede birleştir.

Soru
model = ____(StandardScaler(), KNeighborsClassifier())
Cevap
model = make_pipeline(StandardScaler(), KNeighborsClassifier())

Açıklama: make_pipeline adımları sırayla bağlar ve adları otomatik verir.

3 Adımları eşleştir.

Kavram Anlamı
make_pipeline Adımları zincirler
StandardScaler Ortalama 0, std 1
model.fit Ölçeği ve modeli öğrenir
ham KNN Büyük birim baskın

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