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:
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.
Aufgabe
MittelEine 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.
- Lege die Wichtigkeiten in einer Series ab, benannt nach dem Feature und aufsteigend sortiert.
- Gib das wichtigste Feature (3 Dezimalstellen) und die Features, nach denen nie gefragt wurde, wie unten aus.
- 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:
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
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