Menu
CoddyTech

Ważność cech

Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 30 z 58.

Na jakich cechach polega drzewo? feature_importances_ podaje udział każdej cechy w sortowaniu wykonywanym przez jego pytania, a udziały sumują się do 1:

Poziome słupki dla drzewa irysów o głębokości 3: szerokość płatka 0.58, długość płatka 0.42, szerokość działki kielicha 0.00, długość działki kielicha 0.00

Posortowane i umieszczone w obiekcie Series tworzą rankingowy wykres. ax.barh rysuje słupki poziomo, dzięki czemu mieszczą się długie nazwy:

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

0 oznacza, że drzewo nigdy nie pytało o tę cechę. Działki kielicha nadal mogą mieć znaczenie: płatki już powiedziały drzewu, czego może się po nich spodziewać.

challenge icon

Wyzwanie

Średni

Szkoła surfingu chce wiedzieć, co sprawia, że początkujący stają na desce w pierwszym tygodniu. Program odczytuje głębokość; kod startowy trenuje drzewo o takiej głębokości i przygotowuje wykres.

  1. Umieść ważności w Series, indeksując je nazwami cech, od najmniejszej do największej.
  2. Wypisz najważniejszą cechę (3 miejsca po przecinku) oraz cechy, o które nigdy nie pytano, jak poniżej.
  3. Narysuj je jako poziome słupki i wyświetl wykres.

Dla szkoły pływania:

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

Następnie Coddy opisze Twój wykres. Ich wykres wygląda tak:

Poziome słupki zatytułowane Co pomaga pływakom pokonać trudności?, od największego u góry: pool_hours około 0.61, can_float 0.21, age 0.10, lessons_per_week 0.08, goggles 0

Spróbuj swoich sił

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())

# Jeden wiersz na początkującego: 1 w standing oznacza, że udało mu się stanąć na desce w pierwszym tygodniu
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")  # pozostawia miejsce na długie nazwy
ax.set_title("What Gets Beginners Standing?")
ax.set_xlabel("Importance")

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online