Les arbres posent des questions
Fait partie de la section Apprentissage supervisé du Journey Machine Learning de Coddy. Leçon 27 sur 58.
Ce chapitre se termine par un arbre qui explique un prêt agricole. Un arbre de décision joue au jeu des vingt questions : une question oui ou non à la fois sur une caractéristique, jusqu’à obtenir une réponse :
L’entraînement choisit chaque question de façon à ce que ses réponses séparent les classes aussi nettement que possible :
from sklearn.tree import DecisionTreeClassifier
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train) # longueur et largeur des pétales, cm
print(tree.predict([[4.5, 1.4]]))Cela affiche [1], versicolor. max_depth=2 autorise deux questions par chemin. Aucun ajustement d’échelle n’est nécessaire : chaque question lit une caractéristique.
Défi
MoyenUne boutique de location de matériel photo envoie un rappel par SMS lorsque le matériel risque d’être rendu en retard. Le code de départ sépare les locations passées et lit une nouvelle location dans le tableau à une ligne new_rental.
- Entraîne un arbre de décision avec au plus 2 questions par chemin (
random_state=0). - Affiche sa précision sur les données de test (3 décimales) et sa prédiction pour la nouvelle location :
likely latepour 1,likely on timepour 0.
Pour une autre boutique :
Test accuracy: 0.792
This rental: likely on timeEssayez vous-même
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
# Locations passées : 1 dans late signifie que le matériel a été rendu en retard
rentals = pd.read_csv("rentals.csv")
features = ["rental_weeks", "gear_value_usd", "customer_age", "late_before"]
X_train, X_test, y_train, y_test = train_test_split(rentals[features], rentals["late"], test_size=0.25, random_state=0)
# Une nouvelle location : le nombre de semaines réservées, la valeur du matériel, l’âge du client et le nombre de ses retours en retard jusqu’à présent
weeks = int(input())
value = int(input())
age = int(input())
late_before = int(input())
new_rental = pd.DataFrame([[weeks, value, age, late_before]], columns=features)
# É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