Quanto è buono l’adattamento?
Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 39 di 64.
Ogni nuvola di punti ha una retta, quindi gli adattamenti vanno valutati. Un marinaio ha registrato la velocità del vento e quella della barca: confronta gli scarti quadratici della retta con quelli della media, la previsione più semplicistica:
R quadrato è la quota di quella dispersione spiegata dalla retta:
wind = np.array([6, 8, 10, 12, 15, 18])
boat = np.array([3.1, 4.4, 4.9, 6.2, 6.8, 8.1])
slope, intercept = np.polyfit(wind, boat, 1)
predicted = slope * wind + intercept
ss_res = ((boat - predicted) ** 2).sum() # l'adattamento: 0.35
ss_tot = ((boat - boat.mean()) ** 2).sum() # la media: 16.23
print(np.round(1 - ss_res / ss_tot, 3))Questo stampa 0.979: la retta spiega il 98% della dispersione della velocità. 1 indica una retta perfetta, 0 non è meglio della media.
È la misura standard di un modello che predice numeri. Per una retta adattata, è uguale a r_squared.
Sfida
MedioUna coltivazione di funghi ha registrato 16 letti di coltivazione in mushrooms.csv. Il programma legge il nome di una colonna e il codice iniziale adatta la retta che predice harvest_kg a partire da essa. Nel report serve r_squared, ancora vuota.
- Completa
r_squared(y, predicted)in modo che restituisca il valore R quadrato. - Alla fine, stampa la verifica: la correlazione tra
xey, elevata al quadrato, moltiplicata per 100 e arrotondata a 1 cifra decimale.
Per un’altra coltivazione e con l’input humidity:
humidity explains 27.0% of the harvest variation
Check with r squared: 27.0%Provalo tu
import numpy as np
import pandas as pd
# Restituisce il coefficiente R quadrato delle previsioni per y
def r_squared(y, predicted):
# Scrivi qui il tuo codice
return 0
beds = pd.read_csv("mushrooms.csv")
column = input()
# Non modificare le righe qui sotto
x = beds[column]
y = beds["harvest_kg"]
slope, intercept = np.polyfit(x, y, 1)
predicted = slope * x + intercept
r2 = r_squared(y, predicted)
print(f"{column} explains {np.round(r2 * 100, 1)}% of the harvest variation")
# 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 Statistica per il machine learning
1Centro e dispersione
Media e medianaPercentili e quartiliVarianza e deviazione standardCampione o popolazione?Il valore più frequenteRiepilogo: tempi di consegna4Campioni e popolazioni
Popolazione e campioneLe medie campionarie varianoDistribuzione campionariaCampioni più grandi, meno rumoreRiepilogo: sondare una città7Linee di tendenza
ResiduiAdattamento dei minimi quadratiTracciare la retta di adattamentoFare previsioni con una rettaQuanto è buono l’adattamento?Riepilogo: ore di pratica10Codifica delle categorie
Categorie come numeriCodifica one-hotRaggruppamento dei numeri in intervalliRiepilogo: annunci di auto2Distribuzioni
Istogrammi di densitàForme dei datiCurva normaleRegola 68-95-99,7Punteggi ZRiepilogo: durata della batteria5Valori anomali
Diagrammi a scatolaLa regola dell'IQRLa regola dello z-scoreGestire i valori anomaliRiepilogo: anomalie dei sensori3Probabilità tramite simulazione
La probabilità come frequenzaLa legge dei grandi numeriSomme dei dadiValore attesoProbabilità condizionataRiepilogo: probabilità al banco dei dadi6Relazioni
Leggere i grafici a dispersioneCorrelazioneMatrice di correlazioneMappe di calore della correlazioneCorrelazione non significa causalitàRiepilogo: gelato e soleEsercitati da solo: Compilatore Python online