Méthode d'ensemble

Dans ce TP, nous revenons à la classification supervisée et nous abordons les méthodes d'ensemble. Nous étudions en particulier les forêts aléatoires. Constituées d'un ensemble d'abres de décision, les forêts constituent une famille de modèles très performants. Les forêts l'une des méthodes les plus performantes en classification supervisée pour les données tabulaires.

À l'issue de ce TP, vous m'envoyez par email un compte-rendu (format pdf) indiquant la réponse aux questions qui sont posées. Vous m'envoyez également un fichier python réalisant toutes les manipulations de ce TP : je dois pouvoir exécuter ce fichier en tapant python3 nom-de-votre-fichier.py et reproduire vos résultats. Cette exécution ne doit pas provoquer d'erreur de python. Remarque : un notebook ne convient pas.

Introduction

En plus de ce que l'on a vu au premier semestre concernant les arbres de décision, on doit ici importer le module de forêts aléatoires de scikit_learn. Cela se fait comme suit :

from sklearn.ensemble import RandomForestClassifier

Ensuite, ayant créé un état aléatoire rs à partir d'une graine et constitué des jeux d'entrainement et de test X_train, X_test, Y_train, Y_test, on crée un objet forêt aléatoire comme suit :

forêt = RandomForestClassifier (n_estimators = 10, min_samples_split = 10,
    min_samples_leaf = 5, max_depth = 5, random_state = rs)

forêt est un objet qui aura les caractéristiques suivantes :

Tous ces paramètres ont été rencontrés pour la construction d'un arbre de décision, à l'exception du premier bien sûr.
Ayant créé un objet forêt, on peut construire la forêt pour un jeu d'exemples :

predictions = forêt. predict (X_test)

predictions est un vecteur contenant les prédictions pour les exemples de test X_test. Comme pour un arbre, on peut comparer ces prédictions à la classe de ces exemples Y_test et déterminer un taux de succès. On peut le faire bien sûr également pour chaque classe. Tout cela est exactement comme avec un arbre de décision.
S'il est malaisé de représenter graphiquement une forêt, on peut néanmoins obtenir un indicateur de l'utilisation des différents attrributs dans la forêt. forêt.feature_importances_ contient cet indicateur. Pour chaque attribut (dans l'ordre de list (X_train)), on obtient la proportion de n&oe;uds des arbres de la forêt dans lesquels cet attribut est testé.
Pour obtenir un tableau facile à lire, on pourra procéder ainsi pour obtenir un tableau de données trié :

importance_attributs = pd. DataFrame ({'importance ' : forêt.feature_importances_}, index = list (X_train))
importance_attributs. sort_values(by = 'importance ', ascending = False)

Travail en autonomie

Retour sur les olives

Appliquer la méthode des forêts aléatoires sur les olives (voir ce TP). Comparer les performances (taux de succès global, taux de succès par classe, table de contingence) d'une forêt avec celle d'un arbre de décision. Chercher des paramètres qui maximisent les performances.

Autre mise en application

Faites de même sur ce jeu de données.