CodeBlanks Logo Icon CodeBlanks

Özet - Pipeline

Bu grupta Pipeline yapısını ve avantajlarını öğrendin.

Özet: pipeline

Bu grupta:

  • Pipeline ön işleme ve modeli tek estimator yapar; sızıntıyı yapısal olarak önler, özellikle hedefe bakan adımlarda.
  • Ara adımlar dönüştürücü olmalı; adımlara pipe["ad"], pipe[:-1] ile erişilir; "passthrough" adımı kapatır.
  • fit'te fit_transform, predict'te transform çalışır.
  • joblib ile tüm hat kaydedilip üretime taşınır.
  • ColumnTransformer farklı sütun gruplarına farklı dönüşüm uygular.

Uygulama Uçtan uca hat

Karışık tablo için ColumnTransformer (sayılar StandardScaler, şehir OneHotEncoder(handle_unknown="ignore")) ve LogisticRegression()'dan oluşan bir make_pipeline kur, y ile eğit. Eğitimde görülmemiş "Antalya" şehrini içeren yeni satır için tahmini yazdır.

Başlangıç kodu

model.py
import numpy as np
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder

df = pd.DataFrame({
    "yas": [25, 32, 47, 51],
    "gelir": [3000, 4500, 8000, 6000],
    "sehir": ["Ankara", "İzmir", "Ankara", "Bursa"],
})
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression

y = np.array([0, 0, 1, 1])
yeni = pd.DataFrame({"yas": [50], "gelir": [7500], "sehir": ["Antalya"]})

# buraya yaz

Örnek çözüm

model.py
import numpy as np
import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import StandardScaler, OneHotEncoder

df = pd.DataFrame({
    "yas": [25, 32, 47, 51],
    "gelir": [3000, 4500, 8000, 6000],
    "sehir": ["Ankara", "İzmir", "Ankara", "Bursa"],
})
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LogisticRegression

y = np.array([0, 0, 1, 1])
yeni = pd.DataFrame({"yas": [50], "gelir": [7500], "sehir": ["Antalya"]})

ct = ColumnTransformer([("sayi", StandardScaler(), ["yas", "gelir"]), ("kat", OneHotEncoder(handle_unknown="ignore"), ["sehir"])])
model = make_pipeline(ct, LogisticRegression()).fit(df, y)
print(model.predict(yeni))

Beklenen çıktı

[1]

Soru ve cevaplar

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

1 Bir ızgarada pipeline içindeki SVC'nin <code>gamma</code> parametresi nasıl yazılır (adım adı "svc")?

  • "svc_gamma"
  • "svc__gamma" Doğru cevap
  • "gamma"
  • "svc.gamma"

Açıklama: Adım adı ile parametre adı çift alt çizgiyle ayrılır.

2 Ön işleme ve modeli otomatik adlarla birleştir.

Soru
model = ____(ct, LogisticRegression())
Cevap
model = make_pipeline(ct, LogisticRegression())

Açıklama: make_pipeline adları "columntransformer", "logisticregression" olur.

3 Araçları eşleştir.

Kavram Anlamı
Pipeline Sıralı adımlar
ColumnTransformer Paralel sütun grupları
joblib Kaydetme
passthrough Adımı kapatma

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