Garfield
YZF Admin
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;
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.
Ö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
Ö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.
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:
Kodun çıktısında seçilen
Örnekte
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ğer | Görevi |
|---|---|---|
param_grid | clf__C için üç değer | Denenecek adayları tanımlar. |
cv | Üç katlı StratifiedKFold | Adayları eğitim verisinin farklı bölümleriyle karşılaştırır. |
scoring | balanced_accuracy | Aday seçiminin ölçütünü belirler. |
refit | True | En iyi adayı verilen eğitim kümesinin tamamında yeniden eğitir. |
n_jobs | 1 | Aramayı 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.