Menu
CoddyTech

Plot Residual

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

Skor yang bagus bisa menyamarkan bentuk yang keliru. Garis ini mendapat skor R kuadrat 0.82 pada adonan yang mengembang, tetapi selisih prediksinya membentuk lengkungan:

Kiri: tinggi adonan dibandingkan dengan waktu dalam jam, naik cepat lalu melambat, dengan garis lurus hasil pencocokan, R kuadrat 0.82. Kanan: residual terhadap prediksi naik dari -1.3 ke +0.7 lalu turun kembali ke -0.7, membentuk lengkungan di sekitar garis nol putus-putus

Grafik di sebelah kanan adalah plot residual: setiap residual, nilai aktual dikurangi nilai prediksi, dibandingkan dengan nilai prediksinya, di atas garis pada 0:

residuals = y_test - pred
fig, ax = plt.subplots()
ax.scatter(pred, residuals)
ax.axhline(0, color="gray", linestyle="--")
plt.show()

Residual yang sehat tersebar seperti derau di sekitar 0. Pola berarti model melewatkan sesuatu: di sini, kenaikannya melambat.

Dengan beberapa fitur, plot juga residual terhadap setiap fitur: fitur yang membentuk lengkungan menyembunyikan kurva.

challenge icon

Tantangan

Sedang

Sebuah sekolah mengemudi memasang garis pada 80 pengujian pengereman: speed_kmh dan braking_m. Kode awal menyimpan prediksi pengujian di pred dan memberi label pada grafik.

  1. Hitung residualnya.
  2. Buat diagram pencar residual terhadap prediksi di atas garis putus-putus berwarna abu-abu pada 0, lalu tampilkan grafiknya.

Apakah garis tersebut tidak menangkap pola lengkung? Di sebelah kiri, garis itu bahkan memprediksi jarak pengereman negatif.

Plot garis yang baik, dari data lain, terlihat seperti ini:

Plot residual berjudul Garis yang Baik: dua puluh titik tersebar tanpa pola di atas dan di bawah garis putus-putus pada 0

Coddy akan menjelaskan grafikmu.

Coba sendiri

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

brakes = pd.read_csv("braking.csv")
X_train, X_test, y_train, y_test = train_test_split(brakes[["speed_kmh"]], brakes["braking_m"], test_size=0.25, random_state=0)
model = LinearRegression()
model.fit(X_train, y_train)
pred = model.predict(X_test)

fig, ax = plt.subplots()
ax.set_title("Braking Line Check")
ax.set_xlabel("Predicted braking distance (m)")
ax.set_ylabel("Residual (m)")

# Tulis kodemu di bawah ini
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