CodeBlanks Logo Icon CodeBlanks

Estimator API

Tüm scikit-learn modelleri fit() ve predict() metotlarını paylaşır.

Estimator API

scikit-learn'de her şey bir estimatordır: veriden bir şey öğrenen nesne. Üç rol vardır:

  • Tahminci (predictor): fit + predict (modeller).
  • Dönüştürücü (transformer): fit + transform (ölçekleyiciler, kodlayıcılar, PCA).
  • Değerlendirici: score.
sc = StandardScaler()            # dönüştürücü
sc.fit(X_train)
Z = sc.transform(X_train)
m = LogisticRegression()          # tahminci
m.fit(Z, y_train)
m.predict(sc.transform(X_test))

Hiperparametreler kurucuda verilir, öğrenilen değerler sonradan _ ile biten özniteliklerde saklanır.

clone ve get_params

Bir estimator'ın hiperparametreleri get_params() ile okunur, set_params() ile değiştirilir. clone aynı ayarlarla eğitilmemiş yeni bir kopya üretir; çapraz doğrulama her katmanda bunu yapar:

from sklearn.base import clone
m = LogisticRegression(C=0.5).fit(X_train, y_train)
yeni = clone(m)
print(yeni.get_params()["C"])   # 0.5
print(hasattr(yeni, "coef_"))   # False: eğitilmemiş

Bu tasarım sayesinde kendi yazdığın sınıflar da BaseEstimator'dan türeyince tüm araçlarla uyumlu çalışır.

Uygulama clone ile kopyala

LogisticRegression(C=0.1, max_iter=1000) eğit. clone ile kopyala; kopyanın C değerini ve coef_ özniteliği olup olmadığını aynı satırda yazdır. Ardından kopyayı set_params(C=10) ile değiştirip eğit ve test doğruluğunu round(..., 3) ile yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

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=0, stratify=y)
from sklearn.base import clone
from sklearn.linear_model import LogisticRegression

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

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=0, stratify=y)
from sklearn.base import clone
from sklearn.linear_model import LogisticRegression

m = LogisticRegression(C=0.1, max_iter=1000).fit(X_train, y_train)
yeni = clone(m)
print(yeni.get_params()["C"], hasattr(yeni, "coef_"))
yeni.set_params(C=10).fit(X_train, y_train)
print(round(yeni.score(X_test, y_test), 3))

Beklenen çıktı

0.1 False
1.0

Soru ve cevaplar

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

1 PCA hangi estimator rolündedir?

  • Değerlendirici
  • Hiçbiri
  • Dönüştürücü Doğru cevap
  • Tahminci

Açıklama: PCA fit ile bileşenleri öğrenir, transform ile veriyi dönüştürür; tahmin yapmaz.

2 Aynı ayarlarla eğitilmemiş bir kopya oluştur.

Soru
yeni = ____(m)
Cevap
yeni = clone(m)

Açıklama: clone yalnızca hiperparametreleri kopyalar, öğrenilenleri değil.

3 Rolleri eşleştir.

Kavram Anlamı
StandardScaler Dönüştürücü
LogisticRegression Tahminci
clone Eğitilmemiş kopya
set_params Ayar değiştirme

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