Menu
CoddyTech

Importanza delle caratteristiche

Fa parte della sezione Apprendimento supervisionato del percorso Machine Learning di Coddy. Lezione 30 di 58.

Su quali caratteristiche si basa un albero? feature_importances_ assegna a ogni caratteristica la propria quota delle divisioni effettuate dalle sue domande, e le quote sommate danno 1:

Barre orizzontali per un albero di iris di profondità 3: larghezza del petalo 0.58, lunghezza del petalo 0.42, larghezza del sepalo 0.00, lunghezza del sepalo 0.00

Ordinati in una Series, formano un grafico in ordine. ax.barh disegna le barre in orizzontale, così i nomi lunghi ci stanno:

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

Uno 0 significa che l’albero non ha mai chiesto informazioni su quella caratteristica. I sepali potrebbero comunque essere importanti: i petali hanno già detto all’albero cosa avrebbero fatto.

challenge icon

Sfida

Medio

Una scuola di surf vuole sapere cosa fa sì che i principianti riescano a stare in piedi sulla tavola durante la loro prima settimana. Il programma legge una profondità; il codice iniziale addestra un albero con quella profondità e prepara il grafico.

  1. Inserisci le importanze in una Series denominata in base alla caratteristica, dalla più piccola alla più grande.
  2. Stampa la caratteristica più importante (3 decimali) e le caratteristiche mai prese in considerazione, come sotto.
  3. Rappresentale con barre orizzontali e visualizza il grafico.

Per una scuola di nuoto:

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

Poi Coddy descrive il tuo grafico. Il loro è così:

Barre orizzontali intitolate Cosa aiuta i nuotatori a progredire?, con la più grande in cima: pool_hours circa 0.61, can_float 0.21, age 0.10, lessons_per_week 0.08, goggles 0

Provalo tu

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

# Una riga per ogni principiante: 1 in standing significa che è riuscito a stare in piedi sulla tavola durante la prima settimana
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")  # lascia spazio ai nomi lunghi
ax.set_title("What Gets Beginners Standing?")
ax.set_xlabel("Importance")

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Apprendimento supervisionato

Esercitati da solo: Compilatore Python online