Menu
CoddyTech

Residuenplots

Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 14 von 58.

Ein guter Wert kann eine falsche Form verbergen. Diese Linie erzielt bei einem ansteigenden Teig ein R-Quadrat von 0.82, doch ihre Abweichungen bilden einen Bogen:

Links: Teighöhe im Verhältnis zu den Stunden, zunächst schnell steigend und dann langsamer, mit einer geraden angepassten Linie, R-Quadrat 0.82. Rechts: Die Residuen im Verhältnis zu den Vorhersagen steigen von -1.3 auf +0.7 und fallen auf -0.7 zurück, ein Bogen um die gestrichelte Nulllinie

Das Diagramm rechts ist ein Residuenplot: jedes Residuum, tatsächlicher Wert minus vorhergesagter Wert, gegen seine Vorhersage aufgetragen, über einer Linie bei 0:

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

Gesunde Residuen streuen wie Rauschen um 0. Ein Muster bedeutet, dass dem Modell etwas entgeht: hier, dass der Anstieg langsamer wird.

Bei mehreren Merkmalen stelle auch die Residuen den einzelnen Merkmalen gegenüber dar: Das Merkmal, bei dem sich ein Bogen zeigt, verbirgt die Kurve.

challenge icon

Aufgabe

Mittel

Eine Fahrschule hat eine Linie an 80 Bremsversuche angepasst: speed_kmh und braking_m. Im Startcode stehen die Testvorhersagen in pred, und das Diagramm ist beschriftet.

  1. Berechne die Residuen.
  2. Stelle sie den Vorhersagen gegenüber einer gestrichelten grauen Linie bei 0 in einem Streudiagramm dar und zeige es dann an.

Verfehlt die Linie eine Kurve? Links sagt sie sogar einen negativen Bremsweg voraus.

Das Diagramm einer passenden Linie sieht bei anderen Daten so aus:

Ein Residuenplot mit dem Titel A Sound Line: zwanzig Punkte, ohne Muster ober- und unterhalb einer gestrichelten Linie bei 0 verteilt

Coddy beschreibt dein Diagramm.

Probier es selbst

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

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Überwachtes Lernen

Übe selbstständig: Online-Python-Compiler