Menu
CoddyTech

Recherche par grille

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

Le réglage manuel implique des boucles imbriquées. GridSearchCV effectue une validation croisée pour chaque combinaison de paramètres et conserve la meilleure. Pour 300 trajets en tram, en retard ou à l’heure :

Une grille 3 × 3 des précisions moyennes : profondeur de l’arbre 2, 4, 6 sur le côté, nombre minimal de lignes par feuille 1, 5, 20 en haut. La meilleure cellule, profondeur 4 et feuille 5, obtient 0.876 et est encadrée

Un dictionnaire associe à chaque paramètre les valeurs à essayer. min_samples_leaf est le nombre minimal de lignes qu’une feuille peut contenir :

from sklearn.model_selection import GridSearchCV

grid = {"max_depth": [2, 4, 6], "min_samples_leaf": [1, 5, 20]}
search = GridSearchCV(DecisionTreeClassifier(random_state=0), grid, cv=5)
search.fit(X_train, y_train)
print(search.best_params_)
print(f"{search.best_score_:.3f}")
print(f"{search.score(X_test, y_test):.3f}")

Cela affiche :

{'max_depth': 4, 'min_samples_leaf': 5}
0.876
0.813

La recherche réentraîne le gagnant sur toutes les lignes d’entraînement, donc search.score le teste une fois. Garde les grilles petites : chaque cellule nécessite 5 ajustements.

challenge icon

Défi

Moyen

Une équipe satellite étiquette les pixels comme étant nuageux ou correspondant à un ciel dégagé à l’aide de k-NN. Le programme lit la plus grande valeur de k à tester ; le code de départ divise les données.

  1. Effectuez une recherche sur grille pour chaque valeur impaire de k, de 1 à ce nombre, avec weights "uniform" ou "distance" (les voisins plus proches comptent davantage), cv=5.
  2. Affichez les meilleurs paramètres, leur précision en validation croisée et la précision sur le jeu de test, avec 3 décimales.

Pour d’autres pixels et 7 :

Best k: 7, weights: distance
Cross-validated accuracy: 0.885
Test accuracy: 0.800

Essayez vous-même

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier

max_k = int(input())

# Ne modifiez pas les lignes ci-dessous : 360 pixels satellite, avec 4 mesures de luminosité chacun ; l’étiquette 1 signifie nuage
X, y = make_classification(n_samples=360, n_features=4, n_informative=3, n_redundant=0,
                           flip_y=0.08, class_sep=0.7, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

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