• Yapay zeka soru ve sorunlarınızı uygun olan kategorilere açıp yanıt alabilirsiniz...

Scikit-learn GridSearchCV ile parametre araması nasıl yapılır?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
GridSearchCV ile parametre araması yapmak için bir model, denenecek parametre değerleri ve bir değerlendirme ölçütü tanımlayın. Araç, parametre ızgarasındaki kombinasyonları çapraz doğrulamayla karşılaştırır. En yüksek ortalama doğrulama puanını veren ayarı seçer; refit=True olduğunda seçilen modeli aramaya verdiğiniz eğitim verisinin tamamıyla yeniden eğitir.

Sağlam bir başlangıç için son test kümesini aramadan önce ayırın. Parametreleri bu test sonucuna bakarak seçmeyin. Ön işleme gerekiyorsa ölçekleyiciyi de Pipeline içine koyun; böylece her doğrulama katında yalnız ilgili eğitim bölümünden öğrenilir. Bu ayrım, scikit-learn’ün veri sızıntısı açıklamasındaki temel kontroldür.

Aramadan önce neyi belirlemelisiniz?​


Önce hedef değişkeni, model ailesini ve başarı ölçütünüzü seçin. Sınıflandırma için uygun bir ölçüt, regresyon probleminde aynı anlamı taşımaz. Aşağıdaki örnekte sınıfların katkısını eşit ağırlıkla değerlendirmek için balanced_accuracy kullanılır. Birden fazla ölçüte bakabilirsiniz; ancak model seçiminin hangi ölçüte göre yapılacağını açıkça belirleyin.

Örnek, bağımsız gözlemler varsayımıyla rastgele bölünen sentetik bir sınıflandırma verisi üretir. Zaman sıralı kayıtlarınız veya aynı kişiye ait tekrarlı gözlemleriniz varsa bu bölme düzenini aynen kopyalamayın; eğitim, doğrulama ve test ayrımını veri yapısına göre kurun.

Pipeline ile çalışan küçük bir örnek​


Bu kod herhangi bir veri kümesi indirmez. Altı özellikli 120 örnek üretir; bunların yüzde 25’ini son test için ayırır. Ölçekleme ve lojistik regresyon tek bir Pipeline içinde tutulur:

Python:
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, StratifiedKFold, GridSearchCV
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline

X, y = make_classification(
    n_samples=120, n_features=6,
    n_informative=4, n_redundant=0,
    random_state=42
)
X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.25, stratify=y, random_state=42
)

pipeline = Pipeline([
    ("scale", StandardScaler()),
    ("clf", LogisticRegression(max_iter=1000))
])
cv = StratifiedKFold(n_splits=3, shuffle=True, random_state=42)

search = GridSearchCV(
    estimator=pipeline,
    param_grid={"clf__C": [0.1, 1.0, 10.0]},
    scoring="balanced_accuracy",
    cv=cv,
    refit=True,
    n_jobs=1,
    error_score="raise"
)
search.fit(X_train, y_train)

print("Secilen ayar:", search.best_params_)
print("Ortalama CV puani:", search.best_score_)
test_score = search.score(X_test, y_test)
print("Son test puani:", test_score)

Kodun çıktısında seçilen clf__C değeri üç adaydan biri olacaktır. Sayısal puanlar bu sentetik denemeye aittir; gerçek veriniz için bir başarı vaadi değildir. C, lojistik regresyondaki düzenleme gücünün tersini temsil eder. Küçük C daha güçlü düzenleme demektir; bu parametre öğrenme oranı değildir.

Temel ayarlar ne işe yarar?​

AyarÖrnekteki değerGörevi
param_gridclf__C için üç değerDenenecek adayları tanımlar.
cvÜç katlı StratifiedKFoldAdayları eğitim verisinin farklı bölümleriyle karşılaştırır.
scoringbalanced_accuracyAday seçiminin ölçütünü belirler.
refitTrueEn iyi adayı verilen eğitim kümesinin tamamında yeniden eğitir.
n_jobs1Aramayı tek paralel iş ile yürütür.
clf__C yazımındaki clf, Pipeline adımının adıdır; çift alt çizgiden sonraki C ise o modelin parametresidir. Modeli Pipeline içinde kullanırken yalnız C yazmak geçerli bir Pipeline parametresi olmadığı için hata oluşturur. Adlandırma kuralı resmî Pipeline belgesinde açıklanır.

Sonuçları nasıl değerlendirmelisiniz?​


best_params_ seçilen ayarları, best_score_ ise bu adayın ortalama çapraz doğrulama puanını verir. Ayrıntılı aday sonuçları cv_results_ içinde bulunur. Bu ortalama, ayrılmış son test puanı değildir. Adayların puanları birbirine çok yakınsa küçük farkı kesin üstünlük gibi yorumlamayın; katlar arasındaki değişkenliği ve modelin karmaşıklığını birlikte inceleyin.

Örnekte search.fit() yalnız eğitim kümesini görür. Son test, seçim ve yeniden eğitim tamamlandıktan sonra bir kez değerlendirilir. Test puanı düşük diye yeni değerler deneyip her tur aynı testle seçim yapmak, test kümesini geliştirme sürecine katmak olur. Yeniden seçim gerekiyorsa eğitim içindeki doğrulama düzenini kullanın ve bağımsız son değerlendirme ihtiyacını koruyun. Özelliklerin ve parametrelerin ayrıntıları GridSearchCV API belgesinde yer alır.

Sık sorulan sorular​

Üç parametre değeri neden yalnız üç eğitim yapmıyor?​

Her aday üç katın her birinde eğitilir: bu örnekte arama için dokuz eğitim yapılır. refit=True ile seçilen adayın bütün eğitim verisine uydurulması da eklenir. Yeni parametreler eklediğinizde kombinasyon sayıları çarpılır; önce küçük ve anlamlı bir ızgarayla başlayın.

Ölçeklemeyi aramadan önce yapabilir miyim?​

Bütün eğitim verisinde bir kez ölçekleyip ardından çapraz doğrulama yapmak, doğrulama katlarının bilgisini ölçekleme hesabına taşır. Bu nedenle örnekte StandardScaler aramanın içindeki Pipeline’da yer alır. Test kümesinde ayrıca fit_transform() çalıştırmayın; seçilen Pipeline gerekli dönüşümü kendi öğrendiği kurallarla uygular.
 

Sen de şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Konuyu görüntüleyenler

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Geri
Üst