Menu
CoddyTech

Optimisation d’une chaîne de traitement

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

Un pipeline peut être réglé comme n’importe quel modèle, y compris ses étapes de nettoyage. Chaque paramètre est nommé d’après son étape, suivie de deux tirets bas, puis du paramètre :

pipe = make_pipeline(SimpleImputer(), DecisionTreeClassifier(random_state=0))
grid = {"simpleimputer__strategy": ["mean", "median", "most_frequent"],
        "decisiontreeclassifier__max_depth": [2, 4, 6, 8]}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)

make_pipeline nomme chaque étape d’après sa classe, en minuscules. Pour 200 lancements de fusées modèles, atteignant ou non 300 m, les 12 configurations obtiennent les scores suivants :

Grille des précisions moyennes en validation croisée : lignes pour les imputations par la moyenne, la médiane et most_frequent, colonnes pour les profondeurs d’arbre 2, 4, 6 et 8. Les scores vont de 0.733 à 0.820, et la cellule correspondant aux imputations par la médiane à une profondeur de 6 est indiquée comme la meilleure, avec 0.820

Chaque pli réajuste l’ensemble du pipeline, y compris l’imputeur, afin qu’aucun pli ne consulte les lignes qui le testent.

challenge icon

Défi

Moyen

Une école de musique veut savoir quels élèves violonistes réussiront leur examen de fin de niveau. Le code de départ lit trois valeurs de k, et sa recherche sur grille dans un pipeline s’arrête avec une erreur.

  1. Corrige les deux clés de la grille afin que la recherche ajuste la stratégie de l’imputeur et le nombre de voisins de k-NN.
  2. Affiche les meilleurs paramètres, leur précision validée par validation croisée et la précision sur les données de test, comme ci-dessous.

Une autre école, avec 2, 4, 6 :

Best: mean fills, 6 neighbors
Cross-validated accuracy: 0.720
Test accuracy: 0.820

Essayez vous-même

import pandas as pd
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.impute import SimpleImputer
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import make_pipeline

# Élèves de violon : ont réussi leur examen de niveau (1) ou non (0) ; certains relevés de travail
# et résultats de lecture à vue sont manquants
students = pd.read_csv("violins.csv")
X = students.drop(columns="passed")
y = students["passed"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
ks = [int(input()), int(input()), int(input())]

# Cette recherche s’arrête avec une erreur : corrigez la grille
pipe = make_pipeline(SimpleImputer(), StandardScaler(), KNeighborsClassifier())
grid = {
    "strategy": ["mean", "median"],
    "n_neighbors": ks,
}
search = GridSearchCV(pipe, grid, cv=5)
search.fit(X_train, y_train)

# É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