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:
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.
Aufgabe
MittelEine 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.
- Trainiere einen Wald aus so vielen Bäumen (
random_state=0) und gib seine Testgenauigkeit aus. - 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.120Probiere 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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Überwachtes Lernen
1Dein erstes Modell
Aus Beispielen lernenTrainings- und TestdatensätzeAnpassen und VorhersagenEin Modell bewertenRückblick: Saatgutsortierer4Logistische Regression
Ja-Nein-VorhersagenDie EntscheidungsschwelleGewichte als IndizienMehrere KlassenRückblick: Spamfilter2Nächste Nachbarn
So entscheidet k-NNk wählenEntscheidungsgrenzenSkalierung für NachbarnRückblick: Wein-Nachbarn5Klassifikatoren bewerten
Die KonfusionsmatrixPräzision und TrefferquoteDer F1-ScoreUnausgewogene KlassenROC-KurvenRückblick: Screeningtest3Lineare Regression
Zahlen vorhersagenMehrere MerkmaleFehler messenResiduenplotsZusammenfassung: Fahrradverleih6Entscheidungsbäume
Bäume stellen FragenEinen Baum lesenBaumtiefeMerkmalswichtigkeitRückblick: Kreditentscheidungen9Ensembleverfahren
Random ForestsWarum Random Forests funktionierenGradient BoostingRückblick: Förster des Waldes12Abschließende Herausforderungen
Diabetes-FortschrittKreditgenehmigungHandgeschriebene ZiffernKundenabwanderungÜbe selbstständig: Online-Python-Compiler