Özet - Pipeline
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 12/112
- 6 dk
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'tetransformçalışır. joblibile tüm hat kaydedilip üretime taşınır.ColumnTransformerfarklı 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
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
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.
model = ____(ct, LogisticRegression())
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 |