Zbiory walidacyjne
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 35 z 58.
W sekcji „Dobór k i głębokości drzewa” zachowałeś k lub głębokość z najlepszym wynikiem testowym. Ten wynik jest pochlebny: zachowałeś tę wartość, bo wyszła wysoka.
Dlatego zachowaj trzeci zestaw do wyboru, zestaw walidacyjny:
Dwa podziały wystarczą. 0.25 z pozostałych 80% to 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))Dla 500 wierszy wyświetla:
300 100 100Wybieraj na podstawie zbioru walidacyjnego. Zbioru testowego użyj tylko raz, na samym końcu.
Wyzwanie
ŚredniWinnica przewiduje plon winogron z każdego rzędu za pomocą Ridge. Kod początkowy wybiera alpha na podstawie wyniku testowego i podaje ten sam wynik. Popraw to.
- Podziel
X_restiy_restna wiersze treningowe i walidacyjne (test_size=0.25,random_state=0). - Wybierz alpha na podstawie walidacyjnego R kwadrat i wyświetl je wraz z tym wynikiem.
- Dopasuj wybrane alpha do wierszy treningowych i wyświetl testowe R kwadrat.
Dla innej winnicy:
Chosen alpha: 1 (validation R squared 0.787)
Test R squared: 0.726Uczciwy wynik jest często niższy niż wynik kodu początkowego. To właśnie ten prawdziwy.
Spróbuj swoich sił
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
# Dopasowuje model Ridge(alpha) do pierwszego zbioru wierszy po skalowaniu danych i zwraca jego R kwadrat dla drugiego zbioru
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 wierszy danych z winnicy: w każdym 10 pomiarów oraz plon winogron w 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)
# To wybiera alpha na podstawie wyniku na zbiorze testowym, a następnie podaje ten sam wynik: popraw to
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}")
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