Menu
CoddyTech

Importância das características

Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 30 de 58.

Em quais características uma árvore se apoia? feature_importances_ indica a contribuição de cada característica para a separação feita por suas perguntas, e as contribuições somam 1:

Barras horizontais para uma árvore íris de profundidade 3: largura da pétala 0.58, comprimento da pétala 0.42, largura da sépala 0.00, comprimento da sépala 0.00

Ordenadas em uma Series, elas formam um gráfico em ordem de classificação. ax.barh desenha as barras na horizontal, para que nomes longos caibam:

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

Um 0 significa que a árvore nunca perguntou sobre essa característica. As sépalas ainda podem ser importantes: as pétalas já disseram à árvore o que diriam.

challenge icon

Desafio

Médio

Uma escola de surfe quer saber o que faz os iniciantes ficarem em pé na prancha durante a primeira semana. O programa lê uma profundidade; o código inicial treina uma árvore com essa profundidade e configura o gráfico.

  1. Coloque as importâncias em uma Series nomeada pelas características, da menor para a maior.
  2. Imprima a principal característica (3 casas decimais) e as características que nunca foram perguntadas, como abaixo.
  3. Desenhe-as como barras horizontais e exiba o gráfico.

Para uma escola de natação:

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

Então o Coddy descreve seu gráfico. O gráfico deles é assim:

Barras horizontais com o título O que faz os nadadores avançarem?, da maior no topo: pool_hours cerca de 0.61, can_float 0.21, age 0.10, lessons_per_week 0.08, goggles 0

Experimente você mesmo

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

# Uma linha por iniciante: 1 em standing significa que a pessoa ficou em pé na prancha durante a primeira 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")  # deixa espaço para nomes longos
ax.set_title("What Gets Beginners Standing?")
ax.set_xlabel("Importance")

# Escreva seu código abaixo
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Aprendizado supervisionado

Pratique por conta própria: Compilador de Python online