Menu
CoddyTech

Random Forests

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

Ein einzelner Entscheidungsbaum reagiert empfindlich: Ändere ein paar Trainingszeilen, und seine Fragen ändern sich. Dieses Kapitel macht Bäume stabiler, indem es viele davon befragt.

Ein Random Forest trainiert viele Bäume und lässt sie abstimmen. Hier antworten sieben Bäume für einen Geysir:

Sieben kleine Bäume in einer Reihe, unter jedem ihre Stimme: ja, ja, nein, ja, ja, nein, ja. Pfeile führen von jeder Stimme zu einem Kasten mit der Aufschrift Forest: ja, 5 Stimmen zu 2

Im Code ist es ein weiteres Modell, das angepasst werden muss:

from sklearn.ensemble import RandomForestClassifier

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

An 300 Geysir-Tagen gibt dies 0.893 aus, während ein einzelner Baum 0.813 erreichte. n_estimators ist die Anzahl der Bäume.

Viele Wähler, weniger Fehler.

challenge icon

Aufgabe

Mittel

Eine Blindenhundeschule möchte frühzeitig wissen, welche Welpen geeignet sein werden. Der vorgegebene Code teilt puppies.csv auf, bewertet einen Baum und liest die Anzahl der Bäume ein.

  1. Trainiere einen Wald aus so vielen Bäumen (random_state=0) und gib seine Testgenauigkeit aus.
  2. Gib aus, welches Modell gewinnt und um wie viel, oder A tie.

Für eine andere Schule und 50:

Single tree: 0.740
Forest: 0.860
The forest wins by 0.120

Probiere dann 1 aus: Ein Wald aus nur einem Baum schneidet überraschend schlecht ab. In der nächsten Lektion erfährst du, warum.

Probier es selbst

import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier

# Welpen in einer Blindenhundeschule: Gelassenheit, Konzentration und Schreckreaktion bei lauten Geräuschen (1 bis 10),
# Gewicht, Monate bei ihrer Aufzuchtfamilie und ob sie als Blindenhund geeignet sind (1) oder nicht (0)
puppies = pd.read_csv("puppies.csv")
X = puppies[["calmness", "focus", "noise_startle", "weight_kg", "months_with_family"]]
y = puppies["qualified"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
trees = int(input())

# Ändere die folgenden Zeilen nicht: ein einzelner Baum, den es zu schlagen gilt
tree = DecisionTreeClassifier(random_state=0)
tree.fit(X_train, y_train)
tree_acc = tree.score(X_test, y_test)
print(f"Single tree: {tree_acc:.3f}")

# 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