Menu
CoddyTech

Residuen

Teil des Abschnitts Statistik für ML der Machine Learning-Journey von Coddy. Lektion 35 von 64.

In diesem Kapitel wird eine Trendlinie durch Daten gelegt, mit ihr werden Vorhersagen getroffen und sie wird bewertet. Hier führt das hin:

Fünf Rasenarbeiten als Punkte, Minuten im Verhältnis zur Rasenfläche, mit einer orangefarbenen Trendlinie durch sie und einem großen grünen Stern auf der Linie, der für einen neuen Rasen der Fläche 10 eine Vorhersage von 50 Minuten zeigt

Wie gut ist eine Gerade? Ein Rasenpflegedienst schätzt 4.5 * area + 5 Minuten pro Auftrag. Jeder rote Abstand ist ein Residuum: Istwert minus vorhergesagter Wert.

Die fünf Rasenaufträge und die geschätzte Gerade, mit einem roten vertikalen Abstand von jedem Punkt zur Geraden, beschriftet mit +6, -5, +3.5, -7 und +3.5

Quadriere sie und addiere sie, um die Gerade zu bewerten:

area = np.array([4, 6, 9, 12, 15])
minutes = np.array([29, 27, 49, 52, 76])
residuals = minutes - (4.5 * area + 5)
print(residuals)
print((residuals ** 2).sum())

Dies gibt Folgendes aus:

[ 6.  -5.   3.5 -7.   3.5]
134.5

Quadrate verhindern, dass sich +6 und -6 gegenseitig aufheben. Je kleiner diese Summe der quadrierten Residuen ist, desto besser ist die Gerade. Ein Modell lernt, indem es sie verkleinert.

challenge icon

Aufgabe

Mittel

Ein Umzugsunternehmen schätzt anhand der Anzahl der Kartons, wie lange ein Umzug dauert. boxes und hours enthalten acht vergangene Umzüge, und das Programm liest zwei geschätzte Geraden ein: slope1, intercept1, dann slope2, intercept2.

  1. Bewerte jede Gerade anhand der Summe ihrer quadrierten Residuen.
  2. Gib beide Summen, auf 2 Dezimalstellen gerundet, und die bessere Gerade wie unten aus.

Für die Geraden 0.16 * boxes + 0.8 und 0.12 * boxes + 2.5:

Line 1 SSR: 0.57
Line 2 SSR: 4.1
Better: line 1

Probier es selbst

import numpy as np

boxes = np.array([10, 18, 25, 32, 40, 47, 55, 60])
hours = np.array([2.5, 3.5, 5.0, 5.5, 7.0, 8.0, 9.5, 10.0])
slope1 = float(input())
intercept1 = float(input())
slope2 = float(input())
intercept2 = float(input())

# 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 Statistik für ML

Übe selbstständig: Online-Python-Compiler