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:
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.
Desafío
IntermedioUna 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.
- Coloca las importancias en una Series nombrada por característica, de menor a mayor.
- Imprime la característica principal (3 decimales) y las características por las que nunca se preguntó, como se muestra abajo.
- 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í:
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
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Aprendizaje supervisado
1Tu primer modelo
Aprender de ejemplosConjuntos de entrenamiento y pruebaAjustar y predecirEvaluar un modeloRepaso: clasificador de semillas4Regresión logística
Predicciones de sí o noEl umbral de decisiónLos pesos como evidenciaVarias clasesRepaso: filtro de spam2Vecinos más cercanos
Cómo decide k-NNCómo elegir kFronteras de decisiónEscalado para los vecinosRepaso: vecinos del vino5Medición de clasificadores
La matriz de confusiónPrecisión y exhaustividadLa puntuación F1Clases desequilibradasCurvas ROCRepaso: prueba de detección8Validación cruzada
Validación K-FoldComparación justa de modelosBúsqueda en cuadrículaRepaso: reparaciones de monopatines11Proyecto: especies de pingüinos
Conoce a los pingüinosPrepara los datosElige un modeloAjusta el modelo ganadorPublica el modelo3Regresión lineal
Predicción de númerosVarias característicasMedición de erroresGráficos de residuosRepaso: alquiler de bicicletas6Árboles de decisión
Los árboles hacen preguntasLeer un árbolProfundidad del árbolImportancia de las característicasRepaso: decisiones de préstamosPractica por tu cuenta: Compilador de Python online