CodeBlanks Logo Icon CodeBlanks

score metodu

score() metodu modelin R² veya accuracy değerini döndürür.

score yöntemi

score(X, y) her estimator türü için varsayılan metriği döndürür: sınıflandırıcılarda doğruluk, regresörlerde R². Farklı bir metrik gerekiyorsa sklearn.metrics fonksiyonları ya da get_scorer kullanılır:

from sklearn.metrics import get_scorer
f1 = get_scorer("f1_macro")
print(f1(m, X_test, y_test))   # (model, X, y) imzası

Scorer nesneleri (estimator, X, y) alır; bu, çapraz doğrulama ve ızgara aramasının içeride kullandığı biçimdir.

make_scorer

Kendi metriğini make_scorer ile ölçüt yapabilirsin. Hata metriği küçüldükçe iyiyse greater_is_better=False verilir; ölçüt sonucu negatif döndürür:

from sklearn.metrics import make_scorer
def ort_yuzde_hata(y, p):
    return np.mean(np.abs(y - p) / y)
olcut = make_scorer(ort_yuzde_hata, greater_is_better=False)
cross_val_score(model, X, y, cv=5, scoring=olcut)

İşe özgü maliyetler (yanlış negatifin 10 kat pahalı olması gibi) bu yolla doğrudan model seçimine katılır.

Uygulama Özel ölçüt

Yanlış negatifi 5 puan, yanlış pozitifi 1 puan sayan maliyet(y, p) fonksiyonunu yaz. make_scorer(maliyet, greater_is_better=False) ile ölçüt yap ve modelin test kümesindeki değerini yazdır.

Başlangıç kodu

model.py
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import make_scorer

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
m = make_pipeline(StandardScaler(), LogisticRegression()).fit(X_train, y_train)

# buraya yaz

Örnek çözüm

model.py
import numpy as np
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import make_scorer

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0, stratify=y)
m = make_pipeline(StandardScaler(), LogisticRegression()).fit(X_train, y_train)

def maliyet(y, p):
    fn = np.sum((y == 1) & (p == 0))
    fp = np.sum((y == 0) & (p == 1))
    return 5 * fn + fp

olcut = make_scorer(maliyet, greater_is_better=False)
print(olcut(m, X_test, y_test))

Beklenen çıktı

-18

Soru ve cevaplar

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

1 <code>RandomForestRegressor().score(X, y)</code> neyi döndürür?

  • Doğruluk
  • MAE
  • MSE
  • R² Doğru cevap

Açıklama: Tüm regresörlerin varsayılan score metriği R²'dir.

2 Küçüğü iyi olan bir metrikten ölçüt yap.

Soru
olcut = make_scorer(hata, ____=False)
Cevap
olcut = make_scorer(hata, greater_is_better=False)

Açıklama: greater_is_better=False sonucu negatif yapar ki "büyük daha iyi" kuralı korunsun.

3 Varsayılan metrikleri eşleştir.

Kavram Anlamı
Sınıflandırıcı score Doğruluk
Regresör score R²
get_scorer Adla ölçüt
make_scorer Özel ölçüt

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