Menu
CoddyTech

Merkmalswichtigkeit

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

Auf welche Merkmale stützt sich ein Baum? feature_importances_ gibt den Anteil jedes Merkmals an den Sortierungen an, die seine Fragen vorgenommen haben, und die Anteile ergeben zusammen 1:

Horizontale Balken für einen Iris-Baum der Tiefe 3: petal width 0.58, petal length 0.42, sepal width 0.00, sepal length 0.00

Als Series sortiert ergeben sie ein Rangdiagramm. ax.barh zeichnet die Balken horizontal, sodass lange Namen hineinpassen:

imp = pd.Series(tree.feature_importances_, index=iris.feature_names).sort_values()
ax.barh(imp.index, imp.values)

Eine 0 bedeutet, dass der Baum nie nach diesem Merkmal gefragt hat. Die Kelchblätter könnten trotzdem eine Rolle spielen: Die Blütenblätter haben dem Baum bereits mitgeteilt, was sie tun würden.

challenge icon

Aufgabe

Mittel

Eine Surfschule möchte wissen, wodurch Anfänger in ihrer ersten Woche auf dem Brett stehen. Das Programm liest eine Tiefe ein; das Startprogramm trainiert einen entsprechend tiefen Baum und richtet das Diagramm ein.

  1. Lege die Wichtigkeiten in einer Series ab, benannt nach dem Feature und aufsteigend sortiert.
  2. Gib das wichtigste Feature (3 Dezimalstellen) und die Features, nach denen nie gefragt wurde, wie unten aus.
  3. Zeichne sie als horizontale Balken und zeige das Diagramm an.

Für eine Schwimmschule:

Top feature: pool_hours (0.612)
Never asked: ['goggles']

Dann beschreibt Coddy dein Diagramm. Das Diagramm sieht so aus:

Horizontale Balken mit dem Titel „Was bringt Schwimmer durch?“, der größte oben: pool_hours etwa 0.61, can_float 0.21, age 0.10, lessons_per_week 0.08, goggles 0

Probier es selbst

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier

depth = int(input())

# Eine Zeile pro Anfänger: 1 in standing bedeutet, dass die Person innerhalb ihrer ersten Woche auf dem Brett stand
surf = pd.read_csv("surfschool.csv")
features = ["age", "fitness", "days_surfed", "skated_before", "lesson_hours", "wetsuit_fit"]
X_train, X_test, y_train, y_test = train_test_split(surf[features], surf["standing"], test_size=0.25, random_state=0)
tree = DecisionTreeClassifier(max_depth=depth, random_state=0)
tree.fit(X_train, y_train)

fig, ax = plt.subplots(layout="constrained")  # lässt Platz für lange Namen
ax.set_title("What Gets Beginners Standing?")
ax.set_xlabel("Importance")

# 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