Menu
CoddyTech

Fehler messen

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

Wie weit liegt ein Modell in Dollar daneben? Hier ist ein Modell für Hauspreise anhand von fünf Testhäusern, die es noch nie gesehen hat:

Fünf Balken, einer pro Testhaus, für die Größe der Abweichung des Preismodells: 20, 40, 10, 90 und 30 Tausend Dollar. Eine gestrichelte Linie markiert den MAE bei 38, eine gepunktete den RMSE bei 47.1, darüber aufgrund der einen großen Abweichung von 90

sklearn.metrics misst die Abweichungen für dich:

from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score

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

Dies gibt Folgendes aus:

38.0
47.1
0.776

Der MAE, der mittlere absolute Fehler, ist die typische Abweichung: 38 Tausend. Der RMSE quadriert die Abweichungen, bildet den Durchschnitt und zieht dann die Wurzel: Eine große Abweichung hebt ihn auf 47.

Beide verwenden die Einheiten des Zielwerts. r2_score ist dein R-Quadrat: 78 % der Preisstreuung werden erklärt.

challenge icon

Aufgabe

Mittel

Ein Geschäft legt mithilfe eines Modells die Preise für gebrauchte Kameras fest. Hilft ein zusätzliches Merkmal? Das Programm liest shutter_k (Tausende aufgenommener Fotos) oder megapixels ein. Der Starter trainiert zwei Modelle: eines nur mit age_years und eines zusätzlich mit dem weiteren Merkmal. Ihre Testvorhersagen werden in preds gespeichert.

  1. Gib für jedes Modell den MAE, den RMSE (1 Dezimalstelle) und R squared (3 Dezimalstellen) aus.
  2. Gib das Modell mit dem kleineren MAE aus.

Für ein anderes Geschäft und 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

Probier es selbst

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

# Eine Zeile pro verkaufter Kamera: Alter, Anzahl der Auslösungen in Tausend, Megapixel, Preis in Dollar
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# Ganze Zeilen aufteilen; jedes Modell unten wählt seine eigenen Spalten aus
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# Ein Modell pro Spaltenliste und seine Vorhersagen für die Testkameras
preds = []
for cols in columns:
    model = LinearRegression()
    model.fit(X_train[cols], y_train)
    preds.append(model.predict(X_test[cols]))

# 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