CodeBlanks Logo Icon CodeBlanks

cross_val_score

cross_val_score fonksiyonu, k-fold çapraz doğrulama puanlarını döndürür.

cross_val_score

cross_val_score elle yazdığın döngünün tamamını yapar: bölme, klonlama, eğitme, ölçme. cv bir sayı ya da bölücü nesne alır; n_jobs=-1 katmanları paralel çalıştırır:

from sklearn.model_selection import cross_val_score
skorlar = cross_val_score(model, X, y, cv=5, scoring="roc_auc", n_jobs=-1)
print(skorlar.round(3), skorlar.mean().round(3))

Sınıflandırıcıyla sayı verilirse katmanlı (stratified) bölme kullanılır; regresörle düz KFold.

cross_validate ve cross_val_predict

cross_validate birden çok metrik, süreler ve istenirse eğitim skorlarını döndürür. cross_val_predict her örnek için, onu görmemiş modelin tahminini verir; tüm veride karmaşıklık matrisi çıkarmak için idealdir:

from sklearn.model_selection import cross_validate, cross_val_predict
r = cross_validate(model, X, y, cv=5, scoring=["accuracy", "recall"], return_train_score=True)
print(r["train_accuracy"].mean(), r["test_accuracy"].mean())
p = cross_val_predict(model, X, y, cv=5)

Eğitim ve doğrulama skorları arasındaki fark, aşırı öğrenmenin CV içindeki göstergesidir.

Uygulama Katman dışı matris

cross_val_predict(model, X, y, cv=5) ile tüm veri için tahminleri al ve karmaşıklık matrisini yazdır. Ardından cross_validate ile return_train_score=True kullanıp eğitim ve doğrulama doğruluk ortalamalarını round(..., 3) ile aynı satırda yazdır.

Başlangıç kodu

model.py
from sklearn.datasets import load_breast_cancer
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

X, y = load_breast_cancer(return_X_y=True)
model = make_pipeline(StandardScaler(), LogisticRegression())
from sklearn.model_selection import cross_val_predict, cross_validate
from sklearn.metrics import confusion_matrix

# buraya yaz

Örnek çözüm

model.py
from sklearn.datasets import load_breast_cancer
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

X, y = load_breast_cancer(return_X_y=True)
model = make_pipeline(StandardScaler(), LogisticRegression())
from sklearn.model_selection import cross_val_predict, cross_validate
from sklearn.metrics import confusion_matrix

p = cross_val_predict(model, X, y, cv=5)
print(confusion_matrix(y, p))
r = cross_validate(model, X, y, cv=5, return_train_score=True)
print(round(r["train_score"].mean(), 3), round(r["test_score"].mean(), 3))

Beklenen çıktı

[[204   8]
 [  3 354]]
0.989 0.981

Soru ve cevaplar

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

1 <code>n_jobs=-1</code> ne işe yarar?

  • Katman sayısını sınırsız yapar
  • Eğitimi atlar
  • Tüm işlemci çekirdeklerini paralel kullanır Doğru cevap
  • Hata ayıklama modunu açar

Açıklama: Her katman bağımsız olduğu için paralelleştirme doğrudandır.

2 Her örnek için görmemiş modelin tahminini al.

Soru
p = ____(model, X, y, cv=5)
Cevap
p = cross_val_predict(model, X, y, cv=5)

Açıklama: cross_val_predict katman dışı (out-of-fold) tahminler üretir.

3 Fonksiyonları eşleştir.

Kavram Anlamı
cross_val_score Tek metrik skorları
cross_validate Çoklu metrik ve süre
cross_val_predict Katman dışı tahmin
return_train_score Eğitim skorları

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