cross_val_score
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 15/112
- 5 dk
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
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
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.
p = ____(model, X, y, cv=5)
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ı |