CodeBlanks Logo Icon CodeBlanks

param_grid

param_grid, denenecek hiperparametre değerlerini içeren sözlüktür.

param_grid yapısı

param_grid bir sözlüktür: anahtar parametre adı, değer denenecek değerlerin listesi. Tüm listelerin kartezyen çarpımı denenir:

izgara = {"svc__C": [0.1, 1, 10], "svc__kernel": ["linear", "rbf"]}
# 3 × 2 = 6 kombinasyon
from sklearn.model_selection import ParameterGrid
print(len(ParameterGrid(izgara)))   # 6

ParameterGrid kaç kombinasyonun deneneceğini aramadan önce görmeni sağlar.

Sözlük listesi: koşullu ızgara

Bazı parametreler yalnızca belirli ayarlarda anlamlıdır: gamma doğrusal çekirdekte kullanılmaz. Sözlük listesi gereksiz kombinasyonları önler:

izgara = [
    {"svc__kernel": ["linear"], "svc__C": [0.1, 1, 10]},
    {"svc__kernel": ["rbf"], "svc__C": [0.1, 1, 10], "svc__gamma": [0.01, 0.1]},
]
print(len(ParameterGrid(izgara)))   # 3 + 6 = 9

Aynı yöntemle farklı modeller bile tek aramada karşılaştırılabilir: {"svc": [SVC(), LogisticRegression()]}.

Uygulama Koşullu ızgara

Doğrusal çekirdek için C ∈ [0.1, 1, 10], rbf çekirdek için C ∈ [1, 10] ve gamma ∈ [0.01, 0.1] içeren bir sözlük listesi kur. ParameterGrid ile kombinasyon sayısını yazdır, ardından GridSearchCV(..., cv=5) çalıştırıp best_params_ değerini 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())])
from sklearn.model_selection import ParameterGrid

# 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())])
from sklearn.model_selection import ParameterGrid

izgara = [
    {"svc__kernel": ["linear"], "svc__C": [0.1, 1, 10]},
    {"svc__kernel": ["rbf"], "svc__C": [1, 10], "svc__gamma": [0.01, 0.1]},
]
print(len(ParameterGrid(izgara)))
gs = GridSearchCV(pipe, izgara, cv=5).fit(X_train, y_train)
print(gs.best_params_)

Beklenen çıktı

7
{'svc__C': 0.1, 'svc__kernel': 'linear'}

Soru ve cevaplar

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

1 3, 4 ve 5 değerli üç parametrenin ızgarası kaç kombinasyon içerir?

  • 20
  • 15
  • 60 Doğru cevap
  • 12

Açıklama: 3 × 4 × 5 = 60; her biri ayrıca her katmanda eğitilir.

2 Kombinasyon sayısını aramadan önce gör.

Soru
print(len(____(izgara)))
Cevap
print(len(ParameterGrid(izgara)))

Açıklama: ParameterGrid her kombinasyonu bir sözlük olarak üretir.

3 Izgaraları kombinasyon sayısıyla eşleştir.

Kavram Anlamı
{"a": [1, 2], "b": [1, 2]} 4
{"a": [1, 2, 3]} 3
[{"a": [1]}, {"b": [1, 2]}] 3 (1 + 2)
{"a": [1, 2], "b": [1, 2, 3]} 6

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