Regolarizzazione
Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 34 di 58.
Un modello lineare sovradattato si affida a pesi elevati per adattarsi a ogni riga rumorosa. La regressione Ridge applica una penalità ai pesi elevati e alpha ne stabilisce il costo.
Ecco 20 chitarre usate e sei caratteristiche ridimensionate che predicono il prezzo:
È a una sola sostituzione da LinearRegression, i cui pesi erano [-83. 116. 104. 27. 17. 15.]:
from sklearn.linear_model import Ridge
ridge = Ridge(alpha=100)
ridge.fit(X_train, y_train)
print(np.round(ridge.coef_))Questo stampa:
[-14. 18. 16. 10. 5. 8.]Un valore più grande di alpha, pesi più piccoli, meno overfitting. Se è troppo grande, il modello è soggetto a underfitting.
Sfida
MedioUn sito turistico prevede i prezzi dei cottage per notte usando 8 caratteristiche e solo 16 cottage. Il programma legge alpha; il codice iniziale divide e ridimensiona i dati.
- Adatta un modello
LinearRegressione unoRidgecon quel valore dialpha. - Stampa la dimensione totale dei pesi di ciascun modello: i pesi senza segno, sommati e arrotondati.
- Stampa ciascun R quadrato sul test (3 decimali) e il modello migliore, come sotto.
Per un'altra regione e 5:
Total weight size: plain 90, ridge 53
Test R squared: plain -0.471, ridge 0.642
Better on new cottages: ridgeProvalo tu
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import r2_score
alpha = float(input())
# No cambies las líneas siguientes: 28 casas de vacaciones, 8 características y el precio por noche en euros
cottages = pd.read_csv("cottages.csv")
features = ["size_m2", "bedrooms", "lake_m", "age_years", "town_km", "sauna", "road_noise_db", "forest_m"]
X = cottages[features]
y = cottages["price"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Escribe tu código a continuación
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