Menu
CoddyTech

Validation K-fold

Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 37 sur 58.

Ce chapitre rend vos scores fiables. À la fin, vous réglerez un modèle à l’aide de graphiques comme celui-ci :

Barres de précision moyenne sur 5 plis pour k de 1 à 41. Les barres passent de 0.85 pour k = 1 à un maximum mis en évidence de 0.91 pour k = 15, puis diminuent

Un seul découpage de test peut tomber juste. La validation croisée K-fold répartit les lignes en plis, ici 5, et teste tour à tour sur chaque pli, en entraînant le modèle sur les autres :

Cinq lignes de cinq cellules. Dans chaque découpage, une cellule, différente à chaque fois, constitue le pli de test ; les quatre autres servent à l’entraînement. Scores de l’arbre Iris à côté : 0.967, 0.967, 0.900, 0.967, 1.000

Un seul appel exécute les cinq, ici pour un arbre sur les fleurs d’iris :

from sklearn.model_selection import cross_val_score

tree = DecisionTreeClassifier(random_state=0)
scores = cross_val_score(tree, X, y, cv=5)
print(np.round(scores, 3))
print(f"{scores.mean():.3f} {scores.std():.3f}")

Cela affiche :

[0.967 0.967 0.9   0.967 1.   ]
0.960 0.033

Indiquez la moyenne comme score, et l’écart-type comme mesure de sa variabilité.

challenge icon

Défi

Moyen

Une brasserie de kombucha prédit les lots avariés à partir de 5 mesures de laboratoire. À quel point son modèle est-il stable ? Le programme lit le nombre de plis ; le code de départ génère les données et le modèle.

  1. Évalue le modèle par validation croisée avec ce nombre de plis.
  2. Affiche la précision de chaque pli, puis la moyenne et l’écart-type, le tout avec 3 décimales.
  3. Affiche le numéro du pli le plus faible, en commençant à 1.

Pour d’autres lots et 4 :

Fold 1: 0.917
Fold 2: 0.933
Fold 3: 0.883
Fold 4: 0.917
Mean 0.912, std 0.018
Weakest fold: 3

Essayez vous-même

import numpy as np
from sklearn.datasets import make_classification
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression

n_folds = int(input())

# Ne modifiez pas les lignes ci-dessous : 240 lots de kombucha, 5 mesures de laboratoire chacun ; l’étiquette 1 signifie que le lot est avarié
X, y = make_classification(n_samples=240, n_features=5, n_informative=3, n_redundant=0,
                           flip_y=0.08, class_sep=0.9, random_state=2)
model = LogisticRegression(max_iter=1000)

# Écrivez votre code ci-dessous
quiz iconTestez-vous

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é

Entraînez-vous par vous-même : Compilateur Python en ligne