Adımlar
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 8/112
- 5 dk
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 pipelinepipe[:-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.
Başlangıç kodu
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
# buraya yazÖrnek çözüm
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))Beklenen çıktı
0.958 0.916
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Pipeline'ın ortasına <code>LogisticRegression()</code> konursa ne olur?
- Son adıma taşınır
- Hata: ara adımlar transform sunmalıdır Doğru cevap
- Sorunsuz çalışır
- Otomatik atlanır
Açıklama: Ara adımların çıktısı sonraki adımın girdisidir; transform olmadan zincir kurulamaz.
2 Ölçekleme adımını devre dışı bırak.
pipe.set_params(olcek=____)
pipe.set_params(olcek="passthrough")
Açıklama: "passthrough" adımı veri değişmeden geçecek biçimde kapatır.
3 Erişimleri eşleştir.
| Kavram | Anlamı |
|---|---|
pipe["olcek"] |
Adla adım |
pipe[0] |
İlk adım |
pipe[:-1] |
Modelsiz alt zincir |
"passthrough" |
Adımı kapatır |