Menu
CoddyTech

Wykresy reszt

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 14 z 58.

Dobry wynik może ukrywać niewłaściwy kształt. Ta linia uzyskuje wynik R kwadrat 0.82 dla rosnącego ciasta, a jednak jej błędy układają się w łuk:

Po lewej: wysokość ciasta w zależności od liczby godzin, szybko rosnąca, a następnie coraz wolniej, z dopasowaną linią prostą, R kwadrat 0.82. Po prawej: reszty względem przewidywań rosną od -1.3 do +0.7, a następnie spadają do -0.7, tworząc łuk wokół przerywanej linii zerowej

Ten wykres po prawej to wykres reszt: każda reszta, czyli wartość rzeczywista minus przewidywana, w zestawieniu z jej przewidywaną wartością, z linią na poziomie 0:

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

Reszty powinny rozpraszać się wokół 0 jak szum. Wzór oznacza, że model czegoś nie uwzględnia: w tym przypadku tego, że wzrost zwalnia.

Przy kilku cechach wykreśl reszty również względem każdej cechy: ta, której wykres tworzy łuk, ukrywa krzywą.

challenge icon

Wyzwanie

Średni

Szkoła jazdy dopasowała prostą do 80 testów hamowania: speed_kmh i braking_m. Kod początkowy przechowuje przewidywania testowe w pred i opisuje wykres.

  1. Oblicz reszty.
  2. Nanieś je na wykres punktowy względem przewidywań, dodaj przerywaną szarą linię na poziomie 0, a następnie wyświetl wykres.

Czy prosta nie uwzględnia krzywizny? Po lewej stronie przewiduje nawet ujemną drogę hamowania.

Wykres dobrze dopasowanej prostej, sporządzony na podstawie innych danych, wygląda tak:

Wykres reszt zatytułowany Dobrze dopasowana prosta: dwadzieścia punktów rozrzuconych bez żadnego wzorca powyżej i poniżej przerywanej linii na poziomie 0

Coddy opisze Twój wykres.

Spróbuj swoich sił

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)")

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online