Menu
CoddyTech

Hataları Ölçme

Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 13 / 58.

Bir model, dolar cinsinden ne kadar yanılıyor? İşte modelin daha önce hiç görmediği beş test evinin fiyatlarını tahmin eden bir model:

Fiyat modelinin yanılma miktarını gösteren, test evlerinin her biri için birer tane olmak üzere beş çubuk: 20, 40, 10, 90 ve 30 bin dolar. Kesikli çizgi 38'deki MAE'yi, noktalı çizgi ise 47.1'deki RMSE'yi gösteriyor; 90'lık büyük bir yanılma nedeniyle bu değer daha yüksek.

sklearn.metrics senin için hataları ölçer:

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

y_test = np.array([290, 410, 235, 520, 330])  # bin dolar
pred = np.array([270, 450, 245, 430, 360])
print(mean_absolute_error(y_test, pred))
print(np.round(np.sqrt(mean_squared_error(y_test, pred)), 1))
print(np.round(r2_score(y_test, pred), 3))

Bu, şunları yazdırır:

38.0
47.1
0.776

MAE, ortalama mutlak hata, tipik sapmadır: 38 bin. RMSE sapmaların karelerini alır, ortalamasını hesaplar, ardından karekökünü alır: tek bir büyük sapma değeri 47'ye yükseltir.

İkisi de hedef değişkenin birimleriyle ifade edilir. r2_score senin R-kare değerindir: fiyatlardaki dağılımın %78'i açıklanır.

challenge icon

Görev

Orta

Bir mağaza, ikinci el kameraları bir modelle fiyatlandırıyor. İkinci bir özellik yardımcı olur mu? Program shutter_k (çekilen fotoğraf sayısı, binlerle) veya megapixels değerini okur. Başlangıç kodu, yalnızca age_years ile ve ek özellik de kullanılarak iki model uyar; test tahminlerini preds içinde tutar.

  1. Her model için MAE, RMSE'yi (1 ondalık basamakla) ve R kare değerini (3 ondalık basamakla) yazdır.
  2. MAE değeri daha küçük olanı yazdır.

Başka bir mağaza ve shutter_k için:

age_years: MAE 212.4, RMSE 268.1, R squared 0.853
age_years + shutter_k: MAE 98.7, RMSE 121.0, R squared 0.97
Better: age_years + shutter_k, off by 98.7 dollars on a typical camera

Kendin dene

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# Satılan her kamera için bir satır: yaş, bin cinsinden deklanşör sayısı, megapiksel, dolar cinsinden fiyat
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# Satırları bütün olarak ayır; aşağıdaki her model kendi sütunlarını seçer
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# Her sütun listesi için bir model ve bu modelin test kameraları için tahminleri
preds = []
for cols in columns:
    model = LinearRegression()
    model.fit(X_train[cols], y_train)
    preds.append(model.predict(X_test[cols]))

# Kodunuzu aşağıya yazın
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Denetimli Öğrenme bölümündeki tüm dersler

Kendi başına pratik yap: Online Python derleyicisi