CodeBlanks Logo Icon CodeBlanks

fit ve predict

Pipeline'da fit() tüm adımları eğitir, predict() tüm adımları uygular.

fit ve predict akışı

pipe.fit(X, y) çağrısında her dönüştürücü için fit_transform çağrılır ve sonuç bir sonraki adıma geçer; son adımda yalnızca fit çağrılır. pipe.predict(X) ise her dönüştürücüde yalnızca transform çağırır:

# fit:     X -> doldur.fit_transform -> olcek.fit_transform -> model.fit
# predict: X -> doldur.transform     -> olcek.transform     -> model.predict

Pipeline, son adımın sunduğu tüm yöntemleri sunar: predict_proba, decision_function, score.

Ara sonucu görmek

Alt pipeline ile dönüştürülmüş veriye bakmak hata ayıklamayı kolaylaştırır. Örneğin ölçeklemenin gerçekten ortalamayı sıfırladığını doğrulamak için:

Z = pipe[:-1].transform(X_train)
print(Z.mean(axis=0).round(3)[:3])   # [0. 0. 0.]
print(Z.shape)

pipe[:-1] yeni bir nesne değil, aynı eğitilmiş adımları paylaşan bir görünümdür.

Uygulama Doldur, ölçekle, tahmin et

Eksik değerli X için SimpleImputer(strategy="mean"), StandardScaler() ve LogisticRegression() içeren bir make_pipeline kur ve eğit. [[np.nan, 3.0]] için tahmini, ardından pipe[:-1].transform([[np.nan, 3.0]]) sonucunu np.round(..., 3) ile yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

X = np.array([[1.0, 1.0], [2.0, np.nan], [3.0, 2.0], [7.0, 6.0], [8.0, 7.0], [np.nan, 8.0]])
y = np.array([0, 0, 0, 1, 1, 1])

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import make_pipeline

X = np.array([[1.0, 1.0], [2.0, np.nan], [3.0, 2.0], [7.0, 6.0], [8.0, 7.0], [np.nan, 8.0]])
y = np.array([0, 0, 0, 1, 1, 1])

pipe = make_pipeline(SimpleImputer(strategy="mean"), StandardScaler(), LogisticRegression()).fit(X, y)
print(pipe.predict([[np.nan, 3.0]]))
print(np.round(pipe[:-1].transform([[np.nan, 3.0]]), 3))

Beklenen çıktı

[0]
[[ 0.    -0.708]]

Soru ve cevaplar

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

1 <code>pipe.predict(X_test)</code> sırasında <code>StandardScaler</code> hangi yöntemi çalıştırır?

  • transform Doğru cevap
  • fit_transform
  • fit
  • predict

Açıklama: Tahmin aşamasında hiçbir adım yeniden öğrenmez.

2 Modelden önceki dönüşümleri uygula.

Soru
Z = pipe____.transform(X_test)
Cevap
Z = pipe[:-1].transform(X_test)

Açıklama: pipe[:-1] son adım hariç tüm dönüştürücüleri içerir.

3 Akışları eşleştir.

Kavram Anlamı
pipe.fit Dönüştürücülerde fit_transform
pipe.predict Dönüştürücülerde transform
pipe.predict_proba Son adımın olasılığı
pipe[:-1] Ara veri

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