GridSearchCV
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 20/112
- 5 dk
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 testscoring 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
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
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.
gs = GridSearchCV(pipe, izgara, cv=5, ____="f1")
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 |