Makine Öğrenmesi
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.
Örnek çözümü göster
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))
Kendini test et
-
<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
Cevabı göster
En iyi parametreler bulunur ama model yeniden eğitilmez; gs.predict kullanılamaz — refit=True varsayılandır ve best_estimator_ üretir.
-
Seçimi F1'e göre yap.
gs = GridSearchCV(pipe, izgara, cv=5, ____="f1")
Cevabı göster
gs = GridSearchCV(pipe, izgara, cv=5, scoring="f1")
-
Parametreleri eşleştir.
- param_grid
- Denenecek değerler
- cv
- Katman sayısı
- scoring
- Seçim metriği
- refit
- En iyiyi yeniden eğit
Sıradaki ders: param_grid