Récapitulatif : réparations de skateboard
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 40 sur 58.
Défi
MoyenLe bureau de location d’un skatepark veut un modèle qui repère les planches retournées nécessitant une réparation. Le programme lit la plus grande valeur de k à essayer.
- Réserve 25 % des lignes pour le test (
random_state=0). - Pour chaque k dans
ks, effectue une validation croisée de k-NN sur les lignes d’entraînement (cv=5). Représente les moyennes sous forme de barres et affiche le meilleur k. - Effectue une recherche par grille sur
max_depthd’un arbre parmi les valeurs dedepths(cv=5,random_state=0) et affiche la meilleure valeur. - La moyenne la plus élevée l’emporte : affiche
Winner: k-NNouWinner: treeavec sa précision sur l’ensemble de test.
Pour un autre parc et 13 :
Best k: 13 (mean 0.785)
Best depth: 5 (mean 0.763)
Winner: k-NN, test accuracy 0.822Coddy décrit ensuite ton graphique. Le sien ressemble à ceci :
Essayez vous-même
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
# La plus grande valeur de k à tester, par exemple 15
max_k = int(input())
# Une ligne par skateboard rendu : nombre de locations depuis son dernier entretien, scores d’usure de 0 à 10
# et fissures dans la planche ; 1 dans repair signifie qu’il est passé à l’atelier
boards = pd.read_csv("skateboards.csv")
features = ["rentals", "wheel_wear", "bearing_noise", "grip_wear", "truck_wobble", "deck_cracks"]
X = boards[features]
y = boards["repair"]
# Chaque caractéristique est un petit nombre ou un score, donc k-NN n’a pas besoin de normalisation ici
ks = list(range(1, max_k + 1, 2))
depths = [2, 3, 4, 5, 6, 7, 8]
fig, ax = plt.subplots()
ax.set_title("Skateboard Repairs: Accuracy by k")
ax.set_xlabel("k (neighbors)")
ax.set_ylabel("Mean CV accuracy")
ax.set_xticks(ks)
ax.set_ylim(0.6, 0.9) # commence à 0.6 pour faire ressortir les petites différences
# Écrivez votre code ci-dessous
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