Hata ölçümü
- Makine Öğrenmesi kursu
- Başlangıç
- Ders 96/112
- 7 dk
MSE ile hata ölçersin.
Hata ölçümü
Son adım, seçilen modeli test kümesinde bir kez ölçmek ve temel çizgiyle karşılaştırmaktır:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
p = model.predict(X_test)
print(mean_absolute_error(y_test, p))
print(mean_squared_error(y_test, p) ** 0.5) # RMSE
print(r2_score(y_test, p))RMSE MAE'den belirgin büyükse, birkaç büyük hata toplam hatayı domine ediyor demektir.
Sonucu yorumlamak
Rapor, sayıları anlamlandırmalıdır: modelin temel çizgiye göre hatayı yüzde kaç azalttığı, hedef aralığına göre hatanın büyüklüğü ve sınırlamalar.
iyilesme = 1 - mae_model / mae_temel
print(f"Model, ortalama tahminine göre hatayı %{100 * iyilesme:.0f} azaltıyor.")Diyabet verisinde R² yaklaşık 0.3-0.4 civarıdır: model yararlıdır ama ilerlemenin çoğunu bu 10 ölçüm açıklayamaz. Bunu açıkça yazmak dürüst bir sonuçtur.
Uygulama Final raporu
Test kümesinde modelin MAE'sini ve DummyRegressor temelinin MAE'sini hesapla. İkisini round(..., 1) ile aynı satırda, ardından iyileşme yüzdesini f"%{100 * iyilesme:.0f}" biçiminde yazdır.
Başlangıç kodu
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(X_train, y_train)
from sklearn.dummy import DummyRegressor
from sklearn.metrics import mean_absolute_error
# buraya yazÖrnek çözüm
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split
X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(X_train, y_train)
from sklearn.dummy import DummyRegressor
from sklearn.metrics import mean_absolute_error
temel = DummyRegressor().fit(X_train, y_train)
mae_model = mean_absolute_error(y_test, model.predict(X_test))
mae_temel = mean_absolute_error(y_test, temel.predict(X_test))
print(round(mae_model, 1), round(mae_temel, 1))
iyilesme = 1 - mae_model / mae_temel
print(f"%{100 * iyilesme:.0f}")Beklenen çıktı
46.2 59.2 %22
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 MAE = 45, RMSE = 70 ise ne söylenebilir?
- Birkaç büyük hata var Doğru cevap
- Tüm hatalar eşit
- Model kusursuz
- RMSE her zaman MAE'dir
Açıklama: Kare alma büyük hataları büyüttüğü için RMSE onlara daha duyarlıdır.
2 RMSE'yi MSE'nin karekökünden hesapla.
rmse = mean_squared_error(y_test, p) ____
rmse = mean_squared_error(y_test, p) ** 0.5
Açıklama: Karekök, 0.5 kuvvetidir.
3 Sonuçları eşleştir.
| Kavram | Anlamı |
|---|---|
MAE |
Ortalama yanılma |
RMSE |
Büyük hatalara duyarlı |
R² |
Açıklanan oran |
1 - mae / mae_temel |
Temele göre iyileşme |