Pixelwichtigkeiten mit parallelem Wald von Bäumen

Machine LearningMachine LearningBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab verwenden wir die scikit-learn-Bibliothek, um einen Random Forest auf dem Olivetti Faces-Datensatz zu trainieren und die auf Unreinheit basierende Merkmalswichtigkeit zu bewerten. Wir verwenden die Merkmalswichtigkeiten, um eine Heatmap der Pixelwichtigkeiten zu erstellen. Wir parallelisieren auch den Aufbau und die Berechnung der Vorhersagen innerhalb mehrerer Jobs.

Tipps für die VM

Nachdem der VM-Start abgeschlossen ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.

Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund von Einschränkungen in Jupyter Notebook nicht automatisiert werden.

Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback, und wir werden das Problem für Sie prompt beheben.


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{{"Pixelwichtigkeiten mit parallelem Wald von Bäumen"}} sklearn/datasets -.-> lab-49131{{"Pixelwichtigkeiten mit parallelem Wald von Bäumen"}} ml/sklearn -.-> lab-49131{{"Pixelwichtigkeiten mit parallelem Wald von Bäumen"}} end

Daten laden und Modellanpassung

Wir beginnen mit dem Laden des Olivetti Faces-Datensatzes und begrenzen den Datensatz, sodass er nur die ersten fünf Klassen enthält. Anschließend trainieren wir einen Random Forest auf dem Datensatz und bewerten die auf Unreinheit basierende Merkmalswichtigkeit. Wir werden die Anzahl der Kerne festlegen, die für die Aufgaben verwendet werden sollen.

from sklearn.datasets import fetch_olivetti_faces

## Wir wählen die Anzahl der Kerne aus, die zur parallelen Anpassung
## des Waldmodells verwendet werden sollen. `-1` bedeutet, alle verfügbaren Kerne zu verwenden.
n_jobs = -1

## Laden des Gesichtsdatensatzes
data = fetch_olivetti_faces()
X, y = data.data, data.target

## Begrenzen des Datensatzes auf 5 Klassen.
mask = y < 5
X = X[mask]
y = y[mask]

## Ein Random Forest-Klassifizierer wird angepasst, um die Merkmalswichtigkeiten zu berechnen.
from sklearn.ensemble import RandomForestClassifier

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

forest.fit(X, y)

Bewerten der Merkmalswichtigkeit

Wir bewerten die Merkmalswichtigkeit basierend auf der durchschnittlichen Abnahme der Unreinheit (MDI). Die Merkmalswichtigkeiten werden durch das angepasste Attribut feature_importances_ bereitgestellt und berechnet sich als Mittelwert und Standardabweichung der Akkumulation der Unreinheitsabnahme innerhalb jedes Baumes.

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"Elapsed time to compute the importances: {elapsed_time:.3f} seconds")
imp_reshaped = importances.reshape(img_shape)
plt.matshow(imp_reshaped, cmap=plt.cm.hot)
plt.title("Pixel importances using impurity values")
plt.colorbar()
plt.show()

Interpretiere die Heatmap

Die Heatmap zeigt die Pixelwichtigkeiten. Je wärmer der Pixel, desto wichtiger ist er. Wir können die wichtigen Pixel beobachten, die zur Klassifizierung des Olivetti Faces-Datensatzes beitragen.

Zusammenfassung

In diesem Lab haben wir gelernt, wie man einen Random Forest auf dem Olivetti Faces-Datensatz trainiert und die auf Unreinheit basierende Merkmalswichtigkeit bewertet. Wir haben eine Heatmap der Pixelwichtigkeiten erstellt und die wichtigen Pixel beobachtet, die zur Klassifizierung des Olivetti Faces-Datensatzes beitragen.