Model eğitimi
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 72/112
- 7 dk
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
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
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.
model = ____(StandardScaler(), KNeighborsClassifier())
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 |