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:
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.
Desafio
MédioUma 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.
- Coloque as importâncias em uma Series nomeada pelas características, da menor para a maior.
- Imprima a principal característica (3 casas decimais) e as características que nunca foram perguntadas, como abaixo.
- 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:
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
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
1Seu primeiro modelo
Aprendendo com exemplosConjuntos de treino e testeAjustar e preverAvaliar um modeloRecapitulação: classificador de sementes4Regressão logística
Previsões de sim ou nãoO limiar de decisãoPesos como evidênciasVárias classesRevisão: filtro de spam2Vizinhos Mais Próximos
Como o k-NN DecideEscolhendo kLimites de DecisãoEscalonamento para VizinhosRevisão: Vizinhos do Vinho5Avaliando Classificadores
A Matriz de ConfusãoPrecisão e RevocaçãoA Pontuação F1Classes DesbalanceadasCurvas ROCRecapitulação: Teste de Triagem8Validação Cruzada
Validação K-FoldComparando Modelos de Forma JustaBusca em GradeRevisão: Consertos de Skate11Projeto: Espécies de Pinguins
Conheça os PinguinsPrepare os DadosEscolha um ModeloAjuste o VencedorColoque o Modelo em Produção3Regressão Linear
Prevendo númerosVárias característicasMedindo errosGráficos de resíduosRevisão: aluguel de bicicletas6Árvores de Decisão
Árvores fazem perguntasLendo uma árvoreProfundidade da árvoreImportância das característicasRevisão: decisões de empréstimoPratique por conta própria: Compilador de Python online