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:
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.776Der 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.
Aufgabe
MittelEin 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.
- Gib für jedes Modell den MAE, den RMSE (1 Dezimalstelle) und R squared (3 Dezimalstellen) aus.
- 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 cameraProbier 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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Überwachtes Lernen
1Dein erstes Modell
Aus Beispielen lernenTrainings- und TestdatensätzeAnpassen und VorhersagenEin Modell bewertenRückblick: Saatgutsortierer4Logistische Regression
Ja-Nein-VorhersagenDie EntscheidungsschwelleGewichte als IndizienMehrere KlassenRückblick: Spamfilter2Nächste Nachbarn
So entscheidet k-NNk wählenEntscheidungsgrenzenSkalierung für NachbarnRückblick: Wein-Nachbarn5Klassifikatoren bewerten
Die KonfusionsmatrixPräzision und TrefferquoteDer F1-ScoreUnausgewogene KlassenROC-KurvenRückblick: Screeningtest3Lineare Regression
Zahlen vorhersagenMehrere MerkmaleFehler messenResiduenplotsZusammenfassung: Fahrradverleih6Entscheidungsbäume
Bäume stellen FragenEinen Baum lesenBaumtiefeMerkmalswichtigkeitRückblick: Kreditentscheidungen9Ensembleverfahren
Random ForestsWarum Random Forests funktionierenGradient BoostingRückblick: Förster des Waldes12Abschließende Herausforderungen
Diabetes-FortschrittKreditgenehmigungHandgeschriebene ZiffernKundenabwanderungÜbe selbstständig: Online-Python-Compiler