score metodu
- Makine Öğrenmesi kursu
- Orta seviye
- Ders 5/112
- 5 dk
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
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
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.
olcut = make_scorer(hata, ____=False)
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 |