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 :
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.813La 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.
Défi
MoyenUne é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.
- 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. - 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.800Essayez 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
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-spam2Plus 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