CodeBlanks Logo Icon CodeBlanks

GridSearchCV

GridSearchCV, grid search ve cross-validation'ı birleştirir.

GridSearchCV

GridSearchCV(estimator, param_grid, cv=...) her kombinasyonu her katmanda eğitir, ortalama skora göre en iyisini seçer ve (varsayılan refit=True) onu tüm eğitim verisinde yeniden eğitir:

gs = GridSearchCV(pipe, {"svc__C": [0.1, 1, 10]}, cv=5, scoring="f1", n_jobs=-1)
gs.fit(X_train, y_train)
print(gs.best_params_)
print(gs.score(X_test, y_test))   # en iyi modelle test

scoring seçimin hangi metriğe göre yapılacağını belirler; varsayılan, estimator'ın score yöntemidir.

Birden çok metrik

scoring bir liste ya da sözlük olabilir. Bu durumda refit, seçimin hangi metriğe göre yapılacağını adıyla belirtmelidir:

gs = GridSearchCV(pipe, izgara, cv=5,
                  scoring={"f1": "f1", "auc": "roc_auc"},
                  refit="f1")
gs.fit(X_train, y_train)
print(gs.cv_results_["mean_test_auc"])

Böylece seçim F1'e göre yapılırken AUC değerleri de raporlanabilir.

Uygulama Izgarayı çalıştır

pipe için {"svc__C": [0.1, 1, 10], "svc__gamma": [0.01, 0.1]} ızgarasıyla GridSearchCV(..., cv=5) çalıştır. best_params_ ve test doğruluğunu (round(..., 3)) alt alta yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

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)
pipe = Pipeline([("olcek", StandardScaler()), ("svc", SVC())])

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

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)
pipe = Pipeline([("olcek", StandardScaler()), ("svc", SVC())])

gs = GridSearchCV(pipe, {"svc__C": [0.1, 1, 10], "svc__gamma": [0.01, 0.1]}, cv=5)
gs.fit(X_train, y_train)
print(gs.best_params_)
print(round(gs.score(X_test, y_test), 3))

Beklenen çıktı

{'svc__C': 10, 'svc__gamma': 0.01}
0.972

Soru ve cevaplar

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

1 <code>refit=False</code> verilirse ne olur?

  • Arama yapılmaz
  • Test kümesi kullanılır
  • Hata verir
  • En iyi parametreler bulunur ama model yeniden eğitilmez; gs.predict kullanılamaz Doğru cevap

Açıklama: refit=True varsayılandır ve best_estimator_ üretir.

2 Seçimi F1'e göre yap.

Soru
gs = GridSearchCV(pipe, izgara, cv=5, ____="f1")
Cevap
gs = GridSearchCV(pipe, izgara, cv=5, scoring="f1")

Açıklama: scoring tek metrik adı ya da metrik sözlüğü alır.

3 Parametreleri eşleştir.

Kavram Anlamı
param_grid Denenecek değerler
cv Katman sayısı
scoring Seçim metriği
refit En iyiyi yeniden eğit

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