CodeBlanks Logo Icon CodeBlanks

Pipeline

Ölçeklendirme ve model Pipeline ile birleştirilir.

Pipeline

Pipeline, ön işleme ve modeli tek nesnede sıralar. Her adım bir ad ve bir nesneden oluşur; son adım model, öncekiler dönüştürücüdür:

from sklearn.pipeline import Pipeline
pipe = Pipeline([
    ("olcek", StandardScaler()),
    ("model", KNeighborsClassifier(n_neighbors=5)),
])
pipe.fit(X_train, y_train)
print(pipe.score(X_test, y_test))

make_pipeline aynısını adları otomatik vererek yapar: "standardscaler", "kneighborsclassifier".

Adımlara erişmek

Adımlara named_steps ile, parametrelere adım__parametre yazımıyla ulaşılır. Bu, ızgara aramasında pipeline içindeki modeli ayarlamanın yoludur:

print(pipe.named_steps["olcek"].mean_)
pipe.set_params(model__n_neighbors=7)
print(pipe.get_params()["model__n_neighbors"])   # 7

Çift alt çizgi (__), adım adını parametre adından ayırır.

Uygulama Adlı pipeline

Iris'te ("olcek", StandardScaler()) ve ("model", KNeighborsClassifier(n_neighbors=3)) adımlarından bir Pipeline kur ve eğit. Test doğruluğunu round(..., 3) ile yazdır; ardından named_steps["olcek"].mean_ değerinin uzunluğunu yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2, stratify=y)

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier

X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=2, stratify=y)

pipe = Pipeline([("olcek", StandardScaler()), ("model", KNeighborsClassifier(n_neighbors=3))])
pipe.fit(X_train, y_train)
print(round(pipe.score(X_test, y_test), 3))
print(len(pipe.named_steps["olcek"].mean_))

Beklenen çıktı

0.978
4

Soru ve cevaplar

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

1 Pipeline'da <code>fit</code> çağrıldığında dönüştürücü adımlar ne yapar?

  • Yalnızca transform yapar
  • Atlanır
  • Modelden sonra çalışır
  • fit_transform yapıp sonucu sonraki adıma verir Doğru cevap

Açıklama: Her dönüştürücü eğitim verisinde öğrenir ve dönüştürür; model dönüşmüş veriyle eğitilir.

2 Pipeline'daki modelin komşu sayısını 9 yap.

Soru
pipe.set_params(____=9)
Cevap
pipe.set_params(model__n_neighbors=9)

Açıklama: adım__parametre yazımı iç içe parametrelere ulaşır.

3 İfadeleri eşleştir.

Kavram Anlamı
Pipeline([...]) Adlı adımlar
make_pipeline Otomatik adlar
named_steps Adıma erişim
model__C İç içe parametre

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