Einen Baum lesen
Teil des Abschnitts Überwachtes Lernen der Machine Learning-Journey von Coddy. Lektion 28 von 58.
Die Fragen eines Baums sind verständlich, sodass du überprüfen kannst, was er gelernt hat. Folge einer Blume mit einer Länge von 5.1 cm und einer Breite von 1.6 cm durch den Iris-Baum:
export_text gibt dieselben Fragen als Text aus, mit einer Einrückung pro Ebene:
from sklearn.tree import export_text
print(export_text(tree, feature_names=["petal_length", "petal_width"]))Das gibt Folgendes aus:
|--- petal_width <= 0.80
| |--- class: 0
|--- petal_width > 0.80
| |--- petal_length <= 4.95
| | |--- class: 1
| |--- petal_length > 4.95
| | |--- class: 2Jede Zeile beantwortet nur die Fragen auf ihrem eigenen Pfad. Klasse 2 ist virginica, eine plausible Antwort für lange, breite Blütenblätter.
Aufgabe
MittelDer Baum eines Käseladens bestimmt anhand des Wassergehalts und der Reifezeit in Wochen, ob ein Käse frisch, soft oder hart ist. Das Starterprogramm trainiert ihn und liest einen neuen Käse ein.
- Gib die Fragen des Baums mit den Merkmalsnamen aus.
- Führe ihn aus, lies die Fragen und vervollständige
by_hand, sodass sie mit if/else dieselben Fragen stellt und dieselbe Antwort zurückgibt.
Nach der Ausgabe: Für einen Käse, den der Baum als soft bezeichnet:
By hand: soft
The tree: softProbier es selbst
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_text
# Eine Zeile pro Käse: Wassergehalt (%), Reifezeit in Wochen und Käsesorte
cheeses = pd.read_csv("cheeses.csv")
features = ["moisture_pct", "aged_weeks"]
X_train, X_test, y_train, y_test = train_test_split(cheeses[features], cheeses["cheese"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=2, random_state=0)
tree.fit(X_train, y_train)
# Ein neuer Käse, dessen Sorte bestimmt werden soll
moisture = int(input())
aged = int(input())
new_cheese = pd.DataFrame([[moisture, aged]], columns=features)
# Schreibe deinen Code unten: Gib den Baum aus und gib dann in by_hand dieselbe Antwort wie der Baum zurück
def by_hand(moisture, aged):
return "fresh"
# Ändere die folgenden Zeilen nicht
print("By hand:", by_hand(moisture, aged))
print("The tree:", tree.predict(new_cheese)[0])
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