Menu
CoddyTech

Importancia de las características

Parte de la sección Aprendizaje supervisado del Journey de Machine Learning de Coddy. Lección 30 de 58.

¿En qué características se apoya un árbol? feature_importances_ indica la proporción que corresponde a cada característica de las divisiones realizadas por sus preguntas, y las proporciones suman 1:

Barras horizontales para un árbol de iris de profundidad 3: ancho del pétalo 0.58, longitud del pétalo 0.42, ancho del sépalo 0.00, longitud del sépalo 0.00

Ordenadas en una Series, forman un gráfico ordenado. ax.barh dibuja las barras de lado, para que quepan los nombres largos:

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

Un 0 significa que el árbol nunca preguntó por esa característica. Los sépalos aún podrían ser importantes: los pétalos ya le dijeron al árbol lo que le dirían.

challenge icon

Desafío

Intermedio

Una escuela de surf quiere saber qué hace que los principiantes se pongan de pie sobre la tabla durante su primera semana. El programa lee una profundidad; el código inicializa un árbol con esa profundidad y prepara el gráfico.

  1. Coloca las importancias en una Series nombrada por característica, de menor a mayor.
  2. Imprime la característica principal (3 decimales) y las características por las que nunca se preguntó, como se muestra abajo.
  3. Dibújalas como barras horizontales y muéstralas.

Para una escuela de natación:

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

Después, Coddy describe tu gráfico. El de ellos se ve así:

Barras horizontales tituladas ¿Qué ayuda a los nadadores a avanzar?, la más grande arriba: pool_hours aproximadamente 0.61, can_float 0.21, age 0.10, lessons_per_week 0.08, goggles 0

Pruébalo tú mismo

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 fila por principiante: 1 en standing significa que logró ponerse de pie sobre la tabla durante su primera semana
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")  # deja espacio para nombres largos
ax.set_title("What Gets Beginners Standing?")
ax.set_xlabel("Importance")

# Escribe tu código a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Aprendizaje supervisado

Practica por tu cuenta: Compilador de Python online