Menu
CoddyTech

Warum Random Forests funktionieren

Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 42 von 58.

Die Bäume eines Waldes unterscheiden sich absichtlich. Jeder wird mit einer Bootstrap-Stichprobe trainiert: zufällig mit Zurücklegen gezogene Zeilen, sodass einige mehrfach vorkommen und andere nicht ausgewählt werden.

Jede Frage berücksichtigt außerdem einige zufällig ausgewählte Merkmale. Die Bäume machen unterschiedliche Fehler, und durch die Abstimmung heben sie sich gegenseitig auf. Zwei Glühwürmchenarten:

Zwei Diagramme mit 150 Glühwürmchen, die Blinkdauer auf der horizontalen und die Pause auf der vertikalen Achse, blaue Kreise für die eine Art und rote Dreiecke für die andere. Links ein Baum: Seine Grenze hat schmale Streifen, die bis zu einzelnen Glühwürmchen reichen. Rechts ein Wald aus 100 Bäumen: eine glatte Grenze zwischen den Gruppen

Der Wald behält einen Streifen nur dort, wo die meisten Bäume übereinstimmen.

Die Bäume befinden sich in forest.estimators_:

third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))

Dies gibt 0.737 aus. Der gesamte Wald erzielt 0.895.

challenge icon

Aufgabe

Mittel

Schlägt ein Wald seine eigenen Bäume? Der Starter trainiert forest mit riders.csv, den Fahrern, die eine 160-km-Fahrt in unter 6 Stunden beendeten oder nicht beendeten, und richtet das Diagramm ein.

  1. Berechne den Score jedes Baums im Wald anhand der Testzeilen.
  2. Stelle die Scores als Histogramm dar, mit bins=10, und markiere forest_acc mit einer roten vertikalen Linie.
  3. Gib aus, wie viele Bäume der Wald schlägt.

Bei einer anderen Fahrt wurde The forest beats 88 of its 100 trees ausgegeben und Folgendes gezeichnet:

Ein Histogramm mit dem Titel The Forest and Its Trees: Testgenauigkeiten der Bäume von etwa 0.53 bis 0.85, die meisten nahe 0.70, und eine rote vertikale Linie nahe 0.77, rechts von den meisten Balken

Coddy beschreibt dann dein Diagramm.

Probier es selbst

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# Teilnehmende einer 160 km langen Benefizfahrt: in weniger als 6 Stunden ins Ziel gekommen (1) oder nicht (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy()  # ein einfaches Array, das Format, das die Bäume des Waldes erwarten
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)

fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")

# Schreibe deinen Code unten
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Überwachtes Lernen

Übe selbstständig: Online-Python-Compiler