Ensembles de validation
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 35 sur 58.
Dans le choix de k et de la profondeur de l’arbre, tu as conservé la valeur de k ou la profondeur ayant obtenu le meilleur score de test. Ce score est flatteur : tu l’as conservée parce qu’elle était élevée.
Gardez donc un troisième ensemble pour choisir, l’ensemble de validation :
Deux découpages suffisent. 0.25 des 80 % restants, cela fait 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))Pour 500 lignes, cela affiche :
300 100 100Fais ton choix à partir de l’ensemble de validation. Ne touche à l’ensemble de test qu’une seule fois, tout à la fin.
Défi
MoyenUn vignoble prédit le rendement en raisin par rangée avec Ridge. Le code de départ choisit alpha en fonction du score de test et indique ce même score. Corrigez-le.
- Divisez
X_restety_resten rangées d’entraînement et de validation (test_size=0.25,random_state=0). - Choisissez alpha en fonction du R carré de validation et affichez-le avec ce score.
- Ajustez le modèle avec l’alpha choisi sur les rangées d’entraînement et affichez son R carré de test.
Pour un autre vignoble :
Chosen alpha: 1 (validation R squared 0.787)
Test R squared: 0.726Le score obtenu honnêtement est souvent inférieur à celui du code de départ. C’est le vrai score.
Essayez vous-même
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import Ridge
# Ajuste un modèle Ridge(alpha) avec mise à l’échelle sur le premier ensemble de lignes et renvoie son R carré sur le second
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 lignes de données viticoles : 10 mesures chacune et le rendement en raisins en 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)
# Ceci choisit alpha en fonction du score de test, puis affiche ce même score : corriger cela
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}")
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Apprentissage supervisé
1Votre premier modèle
Apprendre à partir d’exemplesJeux d’entraînement et de testAjuster et prédireÉvaluer un modèleRécapitulatif : trieur de graines4Régression logistique
Prédictions oui ou nonLe seuil de décisionLes poids comme indicesPlusieurs classesRécapitulatif : filtre anti-spam7Surapprentissage
Sous-apprentissage et surapprentissageCourbes d’apprentissageRégularisationEnsembles de validationRécapitulatif : régler un arbre2Plus proches voisins
Comment k-NN prend ses décisionsChoisir kFrontières de décisionMettre les voisins à l’échelleRécapitulatif : voisins et vin5Évaluer les classificateurs
La matrice de confusionPrécision et rappelLe score F1Classes déséquilibréesCourbes ROCRécapitulatif : test de dépistage8Validation croisée
Validation K-foldComparer les modèles équitablementRecherche par grilleRécapitulatif : réparations de skateboard11Projet : espèces de manchots
À la rencontre des manchotsPréparer les donnéesChoisir un modèleOptimiser le modèle gagnantDéployer le modèle3Régression linéaire
Prédire des nombresPlusieurs caractéristiquesMesurer les erreursGraphiques des résidusRécapitulatif : locations de vélos6Arbres de décision
Les arbres posent des questionsLire un arbreProfondeur de l’arbreImportance des caractéristiquesRécapitulatif : décisions de prêtEntraînez-vous par vous-même : Compilateur Python en ligne