CodeBlanks Logo Icon CodeBlanks

Avantajlar

Pipeline, veri sızıntısını önler ve kodu temiz tutar.

Pipeline'ın kazançları

Pipeline üç somut kazanç sağlar:

  • Doğruluk: sızıntı yapısal olarak önlenir.
  • Kolaylık: tek fit, tek predict; ızgara aramasında tüm adımların ayarları birlikte aranır.
  • Taşınabilirlik: tüm hat tek nesne olarak kaydedilir ve üretime taşınır.
import joblib
joblib.dump(pipe, "model.joblib")
yuklu = joblib.load("model.joblib")
yuklu.predict(yeni_veri)   # ham veri yeterli

Üretimde ham veri gelir; ön işleme modelle birlikte kaydedilmezse eğitimdekiyle aynı dönüşümü yeniden yazmak gerekir ve hata riski doğar.

Pipeline içinde ızgara

Izgara aramasında hem ön işleme hem model ayarları birlikte aranır; her kombinasyon her katmanda temiz biçimde yeniden eğitilir:

izgara = {
    "olcek": [StandardScaler(), MinMaxScaler()],
    "model__C": [0.1, 1, 10],
}
gs = GridSearchCV(pipe, izgara, cv=5).fit(X_train, y_train)
print(gs.best_params_)

Ölçekleyici seçimi de, C değeri de doğrulamayla belirlenmiş olur.

Uygulama Kaydet ve yükle

Eğitilmiş pipeline'ı joblib.dump ile "hat.joblib" dosyasına kaydet, joblib.load ile geri yükle. Yüklenen modelin test tahminlerinin özgün modelinkilerle aynı olduğunu (... == ...).all() ile ve yüklenen modelin test doğruluğunu round(..., 3) ile alt alta yazdır.

Başlangıç kodu

model.py
import joblib
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipe = make_pipeline(StandardScaler(), LogisticRegression()).fit(X_train, y_train)

# buraya yaz

Örnek çözüm

model.py
import joblib
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

pipe = make_pipeline(StandardScaler(), LogisticRegression()).fit(X_train, y_train)

joblib.dump(pipe, "hat.joblib")
yuklu = joblib.load("hat.joblib")
print((yuklu.predict(X_test) == pipe.predict(X_test)).all())
print(round(yuklu.score(X_test, y_test), 3))

Beklenen çıktı

True
0.958

Soru ve cevaplar

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

1 Modeli üretime taşırken ölçekleyiciyi ayrı kaydetmeyi unutmak neye yol açar?

  • Model daha hızlı çalışır
  • Hiçbir şey
  • Model kendini yeniden eğitir
  • Model ölçeklenmemiş veriyle yanlış tahmin yapar Doğru cevap

Açıklama: Model ölçekli veriyle eğitildi; ham veri farklı bir uzaydadır.

2 Pipeline'ı dosyaya kaydet.

Soru
joblib.____(pipe, "model.joblib")
Cevap
joblib.dump(pipe, "model.joblib")

Açıklama: joblib.dump nesneyi diske yazar; joblib.load geri okur.

3 Kazançları eşleştir.

Kavram Anlamı
Sızıntı önleme Doğruluk
Tek fit Kolaylık
joblib.dump Taşınabilirlik
"model__C" Birlikte arama

Orta seviye bölümündeki tüm dersler