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

Scikit-learn ile çapraz doğrulama nasıl uygulanır?

Garfield

YZF Admin
Yaş
40
Konum
YurtDışı
Katılım
27 Eki 2026
Konular
664
Mesajlar
689
AI Seviyesi
Yeni
Çapraz doğrulamayı scikit-learn’de en kolay cross_val_score() veya daha ayrıntılı sonuçlar için cross_validate() ile uygulayabilirsiniz. Modeli veri üzerinde birkaç farklı eğitim-doğrulama bölümünde çalıştırıp her bölümün skorlarını ayrı alır, ardından ortalama ve dağılımı yorumlarsınız. Ön işleme adımlarını Pipeline içine koymak, doğrulama verisinden eğitim aşamasında yanlışlıkla bilgi sızmasını önler.

En küçük çalışan örnek​


Aşağıdaki varsayımsal örnekte iris veri kümesiyle lojistik regresyon modeli değerlendirilir. Veriler beş parçaya ayrılır; model her turda dört parça ile eğitilir ve kalan parçayla sınanır.

Python:
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import StratifiedKFold, cross_val_score
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler

X, y = load_iris(return_X_y=True)

model = make_pipeline(
    StandardScaler(),
    LogisticRegression(max_iter=1000)
)

cv = StratifiedKFold(
    n_splits=5,
    shuffle=True,
    random_state=42
)

scores = cross_val_score(
    model,
    X,
    y,
    cv=cv,
    scoring="accuracy"
)

print("Katlama skorları:", scores)
print("Ortalama doğruluk:", scores.mean())
print("Standart sapma:", scores.std())

Çalıştırıldığında scores dizisinde beş ayrı doğruluk skoru elde edilir. Örneğin skorlar birbirine yakınsa modelin bu veri bölmelerindeki performansı daha tutarlı görünür. mean() genel ortalamayı, std() ise katlamalar arasındaki değişkenliği gösterir. Bu sayılar örnek çalıştırmaya ait garanti edilmiş sonuçlar değildir; kullanılan scikit-learn sürümüne ve veri bölmelerine göre değişebilir.

Uygulama adımları​

  1. Özellikleri ve hedef değerleri ayırın. X modelin kullanacağı girdileri, y ise tahmin edilmek istenen sınıf veya sayısal hedefi içermelidir.
  2. Modeli ve ön işlemeyi bir Pipeline içinde birleştirin. Ölçekleme, eksik değer doldurma veya özellik seçimi gibi işlemler her eğitim katında yalnızca o katın eğitim verisiyle öğrenilmelidir; Pipeline bunu çapraz doğrulama sırasında otomatik olarak ayırır.
  3. Uygun çapraz doğrulama düzenini seçin. Sınıflandırmada sınıf oranlarını koruyan StratifiedKFold, sıradan regresyonda genellikle KFold kullanılır.
  4. Katlama sayısını ve karıştırma ayarını belirleyin. n_splits=5 beş katlama oluşturur. shuffle=True veriyi katlamadan önce karıştırır; random_state aynı girdilerle tekrarlanabilir bölmeler sağlar.
  5. Skoru hesaplayın. cross_val_score(model, X, y, cv=cv, scoring="accuracy") her katlama için tek bir skor döndürür. scoring değerini probleme uygun seçin.
  6. Ortalama ile dağılımı birlikte inceleyin. Yalnızca ortalamaya bakmayın; yüksek standart sapma, modelin veri bölmesine duyarlı olabileceğini gösterir.
  7. Seçilen modeli eğitim verisinde yeniden eğitip ayrı test kümesinde değerlendirin. Çapraz doğrulamayı model veya ayar seçmek için kullandıysanız, nihai tarafsız değerlendirme için baştan ayrılmış test kümesini en son bir kez kullanın.

Hangi çapraz doğrulama düzeni kullanılmalı?​


Veri türü, katlama yöntemini doğrudan etkiler. Seçim yaparken aşağıdaki ayrımlar işinize yarar.
DurumÖnerilen yöntemNeden
SınıflandırmaStratifiedKFoldHer katlamada sınıf oranlarını mümkün olduğunca korur.
RegresyonKFoldVeriyi belirlenen kat sayısında eğitim ve doğrulama bölümlerine ayırır.
Gruplu verilerGroupKFoldAynı kişiye, cihaza veya başka bir gruba ait kayıtların eğitim ve doğrulama tarafına karışmasını önlemeye yardımcı olur.
Zaman sıralı verilerTimeSeriesSplitGelecekteki kayıtların geçmişi tahmin etmek için eğitimde kullanılmasını önlemeye uygun bir sıra izler.
Bu yöntemler birbirinin yerine gelişigüzel kullanılmamalıdır. Örneğin aynı kullanıcıya ait kayıtlar hem eğitim hem doğrulama katına dağılırsa skor, modelin yeni kullanıcılar üzerindeki performansını olduğundan iyi gösterebilir. Zaman serilerinde rastgele karıştırma da geleceğe ait bilginin geçmişe sızmasına yol açabilir.

Skor seçimi ve sonucun yorumu​


accuracy dengeli sınıflarda anlaşılır bir başlangıç ölçüsüdür; ancak sınıflar dengesizse tek başına yeterli olmayabilir. İkili sınıflandırmada precision, recall, f1 veya roc_auc gibi ölçütler; regresyonda neg_mean_absolute_error ya da neg_root_mean_squared_error gibi ölçütler tercih edilebilir. scikit-learn bazı hata ölçütlerini, skor yükseldikçe daha iyi olacak biçimde negatif değer olarak döndürür; bu nedenle özellikle “neg_” ile başlayan skorların yorumunu ölçütün adına göre yapın.

Yüksek ortalama skor, modelin yeni verilerde kesin olarak aynı başarıyı göstereceğini kanıtlamaz. Çapraz doğrulama yalnızca kullanılan veri kümesi, seçilen skor ve bölme düzeni hakkında tahmin sağlar. Katlama skorları çok farklıysa veri azlığı, aykırı gruplar, dengesiz sınıflar veya modelin kararsızlığı araştırılmalıdır.

Birden fazla ayarı deniyorsanız, en iyi ayarı aynı skorlarla seçip sonucu yine aynı katlamalarda raporlamak iyimser bir değerlendirme oluşturabilir. Bu durumda GridSearchCV veya RandomizedSearchCV ile ayar seçebilir, mümkünse ayrı bir test kümesini nihai kontrol için saklayabilirsiniz.

Dikkat edilmesi gereken yaygın hata​


Önce bütün veri kümesine ölçekleme uygulayıp sonra çapraz doğrulama yapmak, doğrulama katının dağılım bilgisini eğitim aşamasına taşıyabilir. Güvenli yaklaşım, ölçekleyiciyi modelle birlikte Pipeline içine almaktır. Aynı ilke özellik seçimi, eksik değer doldurma ve boyut indirgeme gibi veriden öğrenilen diğer işlemler için de geçerlidir.
 

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.
Robotlar:
  • Anthropic
Geri
Üst