Regularyzacja
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 34 z 58.
Model liniowy nadmiernie dopasowany do danych opiera się na dużych wagach, by dopasować się do każdego zaszumionego wiersza. Regresja grzbietowa nakłada karę za duże wagi, a alpha określa jej wysokość.
Oto 20 używanych gitar i sześć przeskalowanych cech służących do przewidywania ceny:
To tylko jedna zamiana względem LinearRegression, którego wagi wynosiły [-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_))To wyświetla:
[-14. 18. 16. 10. 5. 8.]Większa wartość alfa, mniejsze wagi, mniejsze przeuczenie. Jeśli jest zbyt duża, model niedoucza się.
Wyzwanie
ŚredniSerwis z domkami wakacyjnymi przewiduje ceny za noc na podstawie 8 cech, używając tylko 16 domków. Program odczytuje alpha; kod początkowy dzieli i skaluje dane.
- Dopasuj model
LinearRegressioni modelRidgez tymalpha. - Wypisz łączną wielkość wag każdego modelu: wartości wag bez znaków, zsumowane i zaokrąglone.
- Wypisz współczynnik R kwadrat dla każdego modelu testowego (3 miejsca po przecinku) oraz lepszy model, jak poniżej.
Dla innego regionu i 5:
Total weight size: plain 90, ridge 53
Test R squared: plain -0.471, ridge 0.642
Better on new cottages: ridgeSpróbuj swoich sił
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())
# Nie zmieniaj poniższych wierszy: 28 domków letniskowych, 8 cech i cena za noc w euro
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)
# Napisz swój kod poniżej
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nadzorowane
1Twój pierwszy model
Uczenie się na przykładachZbiory treningowe i testoweDopasowywanie i przewidywanieOcena modeluPodsumowanie: Sortownik nasion4Regresja logistyczna
Przewidywanie „tak” lub „nie”Próg decyzyjnyWagi jako dowodyWiele klasPodsumowanie: filtr spamu7Przeuczenie
Niedouczenie i przeuczenieKrzywe uczeniaRegularyzacjaZbiory walidacyjnePodsumowanie: dostrajanie drzewa2Najbliżsi sąsiedzi
Jak działa k-NNWybór kGranice decyzyjneSkalowanie dla sąsiadówPodsumowanie: sąsiedzi w zbiorze Wine5Ocena klasyfikatorów
Macierz pomyłekPrecyzja i czułośćWynik F1Niezrównoważone klasyKrzywe ROCPodsumowanie: test przesiewowy8Walidacja krzyżowa
Walidacja k-krotnaUczciwe porównywanie modeliPrzeszukiwanie siatkiPodsumowanie: naprawa deskorolki11Projekt: Gatunki pingwinów
Poznaj pingwinyPrzygotuj daneWybierz modelDopracuj zwycięski modelWdróż modelPoćwicz samodzielnie: Kompilator Python online