Makine Öğrenmesi
Adımlar
Pipeline adımları (scaler, model) sırayla çalışır.
Adımlar ve adlar
Bir pipeline'ın son adımı herhangi bir estimator olabilir; ondan önceki tüm adımlar dönüştürücü (fit + transform) olmalıdır. Adımlara üç yolla erişilir:
pipe.named_steps["olcek"] # adla
pipe["olcek"] # kısa yazım
pipe[0] # konumla
pipe[:-1] # son adım hariç alt pipeline
pipe[:-1].transform(X), modelin gördüğü dönüştürülmüş veriyi incelemenin pratik yoludur.
Adımı kapatmak ve değiştirmek
Bir adım "passthrough" ile devre dışı bırakılabilir ya da set_params ile başka bir nesneyle değiştirilebilir. Izgara aramasında "ölçekleme olsun mu?" sorusu böyle sorulur:
pipe.set_params(olcek="passthrough") # ölçeklemeyi kapat
pipe.set_params(model=SVC(C=10)) # modeli değiştir
izgara = {"olcek": [StandardScaler(), "passthrough"]}
Adımlar da birer hiperparametre gibi davranır.
Uygulama Ölçekleme etkisini sına
Pipeline([("olcek", StandardScaler()), ("model", SVC())]) kur. Önce olduğu gibi, sonra set_params(olcek="passthrough") ile eğitip test doğruluğunu round(..., 3) ile alt alta yazdır.
Örnek çözümü göster
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 Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
pipe = Pipeline([("olcek", StandardScaler()), ("model", SVC())])
print(round(pipe.fit(X_train, y_train).score(X_test, y_test), 3))
pipe.set_params(olcek="passthrough")
print(round(pipe.fit(X_train, y_train).score(X_test, y_test), 3))
Kendini test et
-
Pipeline'ın ortasına <code>LogisticRegression()</code> konursa ne olur?
- Son adıma taşınır
- Hata: ara adımlar transform sunmalıdır
- Sorunsuz çalışır
- Otomatik atlanır
Cevabı göster
Hata: ara adımlar transform sunmalıdır — Ara adımların çıktısı sonraki adımın girdisidir; transform olmadan zincir kurulamaz.
-
Ölçekleme adımını devre dışı bırak.
pipe.set_params(olcek=____)
Cevabı göster
pipe.set_params(olcek="passthrough")
-
Erişimleri eşleştir.
- pipe["olcek"]
- Adla adım
- pipe[0]
- İlk adım
- pipe[:-1]
- Modelsiz alt zincir
- "passthrough"
- Adımı kapatır
Sıradaki ders: fit ve predict