Menu
CoddyTech

Mengukur Error

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 13 dari 58.

Seberapa jauh selisih prediksi model, dalam dolar? Berikut hasil model harga rumah pada lima rumah uji yang belum pernah dilihatnya:

Lima batang, satu untuk setiap rumah uji, menunjukkan besar selisih prediksi model harga: 20, 40, 10, 90, dan 30 ribu dolar. Garis putus-putus menandai MAE sebesar 38, sedangkan garis bertitik menandai RMSE sebesar 47.1, lebih tinggi karena satu selisih besar sebesar 90

sklearn.metrics mengukur kesalahan untukmu:

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

y_test = np.array([290, 410, 235, 520, 330])  # ribuan 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))

Ini mencetak:

38.0
47.1
0.776

MAE, mean absolute error, menunjukkan kesalahan yang umum terjadi: 38 ribu. RMSE menguadratkan kesalahan, menghitung rata-ratanya, lalu mengambil akar kuadratnya: satu kesalahan besar menaikkan nilainya menjadi 47.

Keduanya menggunakan satuan target. r2_score adalah R kuadratmu: 78% variasi harga dijelaskan.

challenge icon

Tantangan

Sedang

Sebuah toko menentukan harga kamera bekas dengan sebuah model. Apakah fitur kedua membantu? Program membaca shutter_k (ribuan foto yang diambil) atau megapixels. Kode awal melatih dua model, satu hanya dengan age_years dan satu lagi dengan fitur tambahan, lalu menyimpan prediksi pengujiannya di preds.

  1. Untuk setiap model, cetak MAE, RMSE (1 desimal), dan R kuadrat (3 desimal).
  2. Cetak model dengan MAE yang lebih kecil.

Untuk toko lain dan shutter_k:

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

Coba sendiri

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

# Satu baris untuk setiap kamera yang terjual: usia, jumlah jepretan rana dalam ribuan, megapiksel, harga dalam dolar
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# Bagi berdasarkan baris utuh; setiap model di bawah memilih kolomnya sendiri
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# Satu model untuk setiap list kolom, beserta prediksinya untuk kamera uji
preds = []
for cols in columns:
    model = LinearRegression()
    model.fit(X_train[cols], y_train)
    preds.append(model.predict(X_test[cols]))

# Tulis kodemu di bawah
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online