Misurare gli errori
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 13 di 58.
Di quanto sbaglia un modello, in dollari? Ecco un modello dei prezzi delle case su cinque case di prova che non aveva mai visto:
sklearn.metrics misura gli errori per te:
from sklearn.metrics import mean_absolute_error, mean_squared_error, r2_score
y_test = np.array([290, 410, 235, 520, 330]) # migliaia di dollari
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))Questo stampa:
38.0
47.1
0.776Il MAE, errore assoluto medio, è lo scarto tipico: 38 mila. L’RMSE eleva al quadrato gli scarti, ne calcola la media e poi la radice: un singolo grande scarto lo porta a 47.
Entrambi usano le unità della variabile target. r2_score è il tuo R quadrato: il 78% della variabilità dei prezzi è spiegato.
Sfida
MedioUn negozio stabilisce i prezzi delle fotocamere usate con un modello. Una seconda caratteristica è utile? Il programma legge shutter_k (migliaia di scatti) oppure megapixels. Il codice iniziale addestra due modelli, uno solo su age_years e l’altro insieme alla caratteristica aggiuntiva, memorizzando le previsioni sui dati di test in preds.
- Per ogni modello, stampa MAE, RMSE (1 decimale) e R quadrato (3 decimali).
- Stampa quello con il MAE più piccolo.
Per un altro negozio e 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 cameraProvalo tu
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# Una riga per ogni fotocamera venduta: età, numero di scatti dell'otturatore in migliaia, megapixel, prezzo in dollari
cameras = pd.read_csv("cameras.csv")
extra = input()
names = ["age_years", "age_years + " + extra]
columns = [["age_years"], ["age_years", extra]]
# Suddividi le righe intere; ogni modello qui sotto seleziona le proprie colonne
X_train, X_test, y_train, y_test = train_test_split(cameras, cameras["price"], test_size=0.25, random_state=0)
# Un modello per ogni elenco di colonne, con le relative previsioni per le fotocamere di test
preds = []
for cols in columns:
model = LinearRegression()
model.fit(X_train[cols], y_train)
preds.append(model.predict(X_test[cols]))
# Scrivi il tuo codice qui sotto
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Apprendimento supervisionato
1Il tuo primo modello
Imparare dagli esempiInsiemi di addestramento e testAdattare e prevedereValutare un modelloRiepilogo: Ordinatore di semi4Regressione logistica
Previsioni sì o noLa soglia decisionaleI pesi come evidenzePiù classiRiepilogo: filtro antispam2Vicini più prossimi
Come decide k-NNScegliere kConfini decisionaliNormalizzare le scale per i viciniRiepilogo: vicini del vino5Misurare i classificatori
La matrice di confusionePrecisione e richiamoIl punteggio F1Classi sbilanciateCurve ROCRiepilogo: test di screening8Convalida incrociata
Validazione K-foldConfronto equo tra modelliRicerca a grigliaRiepilogo: riparazioni di skateboard11Progetto: specie di pinguini
Incontra i pinguiniPrepara i datiScegli un modelloOttimizza il miglioreDistribuisci il modello3Regressione lineare
Prevedere numeriPiù caratteristicheMisurare gli erroriGrafici dei residuiRiepilogo: noleggio di biciclette6Alberi decisionali
Gli alberi fanno domandeLeggere un alberoProfondità dell’alberoImportanza delle caratteristicheRiepilogo: decisioni sui prestitiEsercitati da solo: Compilatore Python online