Importances de pixels avec forêt aléatoire parallèle d'arbres

Machine LearningMachine LearningBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous utiliserons la bibliothèque scikit-learn pour entraîner une forêt aléatoire sur l'ensemble de données Olivetti Faces et évaluer l'importance des fonctionnalités basée sur l'impureté. Nous utiliserons l'importance des fonctionnalités pour créer une carte thermique de l'importance des pixels. Nous paralléliserons également la construction et le calcul des prédictions dans plusieurs tâches.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans le coin supérieur gauche pour passer à l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez des commentaires après la session, et nous réglerons rapidement le problème pour vous.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL sklearn(("Sklearn")) -.-> sklearn/CoreModelsandAlgorithmsGroup(["Core Models and Algorithms"]) sklearn(("Sklearn")) -.-> sklearn/UtilitiesandDatasetsGroup(["Utilities and Datasets"]) ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) sklearn/CoreModelsandAlgorithmsGroup -.-> sklearn/ensemble("Ensemble Methods") sklearn/UtilitiesandDatasetsGroup -.-> sklearn/datasets("Datasets") ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills sklearn/ensemble -.-> lab-49131{{"Importances de pixels avec forêt aléatoire parallèle d'arbres"}} sklearn/datasets -.-> lab-49131{{"Importances de pixels avec forêt aléatoire parallèle d'arbres"}} ml/sklearn -.-> lab-49131{{"Importances de pixels avec forêt aléatoire parallèle d'arbres"}} end

Charger les données et ajuster le modèle

Nous commençons par charger l'ensemble de données Olivetti Faces et en limitant le contenu aux cinq premières classes seulement. Ensuite, nous entraînons une forêt aléatoire sur cet ensemble de données et évaluons l'importance des fonctionnalités basée sur l'impureté. Nous allons définir le nombre de coeurs à utiliser pour les tâches.

from sklearn.datasets import fetch_olivetti_faces

## Nous sélectionnons le nombre de coeurs à utiliser pour effectuer l'ajustement parallèle du
## modèle de forêt. `-1` signifie utiliser tous les coeurs disponibles.
n_jobs = -1

## Charger l'ensemble de données de visages
data = fetch_olivetti_faces()
X, y = data.data, data.target

## Limiter l'ensemble de données aux 5 classes.
mask = y < 5
X = X[mask]
y = y[mask]

## Un classifieur de forêt aléatoire sera ajusté pour calculer l'importance des fonctionnalités.
from sklearn.ensemble import RandomForestClassifier

forest = RandomForestClassifier(n_estimators=750, n_jobs=n_jobs, random_state=42)

forest.fit(X, y)

Évaluer l'importance des fonctionnalités

Nous évaluons l'importance des fonctionnalités en fonction de la diminution moyenne de l'impureté (MDI). L'importance des fonctionnalités est fournie par l'attribut ajusté feature_importances_ et elles sont calculées comme la moyenne et l'écart-type de l'accumulation de la diminution d'impureté dans chaque arbre.

import time
import matplotlib.pyplot as plt

start_time = time.time()
img_shape = data.images[0].shape
importances = forest.feature_importances_
elapsed_time = time.time() - start_time

print(f"Temps écoulé pour calculer les importances : {elapsed_time:.3f} secondes")
imp_reshaped = importances.reshape(img_shape)
plt.matshow(imp_reshaped, cmap=plt.cm.hot)
plt.title("Importances des pixels en utilisant les valeurs d'impureté")
plt.colorbar()
plt.show()

Interpréter la carte thermique

La carte thermique montre l'importance des pixels. Plus le pixel est chaud, plus il est important. Nous pouvons observer les pixels importants qui contribuent à la classification de l'ensemble de données Olivetti Faces.

Sommaire

Dans ce laboratoire, nous avons appris à entraîner une forêt aléatoire sur l'ensemble de données Olivetti Faces et à évaluer l'importance des fonctionnalités basée sur l'impureté. Nous avons créé une carte thermique de l'importance des pixels et observé les pixels importants qui contribuent à la classification de l'ensemble de données Olivetti Faces.