Set di validazione
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 35 di 58.
Nella scelta di k e della profondità dell’albero, hai mantenuto il valore di k o la profondità con il punteggio di test migliore. Quel punteggio è fuorviante: l’hai mantenuto perché risultava alto.
Quindi tieni da parte un terzo insieme per la scelta, l’insieme di convalida:
Due suddivisioni lo rendono possibile. 0.25 del restante 80% è il 20%:
X_rest, X_test, y_rest, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
X_train, X_val, y_train, y_val = train_test_split(X_rest, y_rest, test_size=0.25, random_state=0)
print(len(X_train), len(X_val), len(X_test))Per 500 righe stampa:
300 100 100Scegli in base alla convalida. Usa il set di test una sola volta, alla fine.
Sfida
MedioUn vigneto prevede la resa dell'uva per filare con Ridge. Il codice iniziale sceglie alpha in base al punteggio del test e riporta quello stesso punteggio. Correggilo.
- Dividi
X_restey_restin righe di addestramento e di convalida (test_size=0.25,random_state=0). - Scegli alpha in base al coefficiente R quadrato di convalida e stampalo insieme a quel punteggio.
- Adatta il valore di alpha scelto alle righe di addestramento e stampa il suo coefficiente R quadrato di test.
Per un altro vigneto:
Chosen alpha: 1 (validation R squared 0.787)
Test R squared: 0.726Il punteggio attendibile è spesso inferiore a quello del codice iniziale. È quello vero.
Provalo tu
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
# Adatta un modello Ridge(alpha) con dati standardizzati al primo gruppo di righe e restituisce il suo R quadrato sul secondo
def ridge_r2(alpha, X_fit, y_fit, X_check, y_check):
scaler = StandardScaler()
model = Ridge(alpha=alpha)
model.fit(scaler.fit_transform(X_fit), y_fit)
return model.score(scaler.transform(X_check), y_check)
# 90 righe relative al vigneto: 10 misurazioni ciascuna e la resa dell'uva in kg
rows = pd.read_csv("vineyard.csv")
features = ["sun_hours", "rain_mm", "soil_ph", "slope_deg", "vine_age",
"row_length_m", "buds_per_vine", "frost_days", "wind_kmh", "clay_pct"]
X = rows[features]
y = rows["yield_kg"]
alphas = [0.1, 1, 10, 100]
X_rest, X_test, y_rest, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# Questo sceglie alpha in base al punteggio sul set di test, poi riporta lo stesso punteggio: correggilo
best_alpha = 0
best_r2 = -1
for alpha in alphas:
r2 = ridge_r2(alpha, X_rest, y_rest, X_test, y_test)
if r2 > best_r2:
best_alpha = alpha
best_r2 = r2
print(f"Chosen alpha: {best_alpha}")
print(f"Test R squared: {best_r2:.3f}")
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 antispam7Sovraadattamento
Sottoadattamento e sovraadattamentoCurve di apprendimentoRegolarizzazioneSet di validazioneRiepilogo: ottimizzare un albero2Vicini 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