Profundidade da árvore
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 29 de 58.
Uma árvore pode continuar perguntando até que cada linha de treinamento tenha sua própria resposta. Então, ela memorizou, não aprendeu:
Árvores profundas aprendem o ruído de suas próprias linhas de treinamento, então a precisão no teste atinge um pico e depois cai. Experimente várias profundidades:
train = []
test = []
for d in range(1, 13):
tree = DecisionTreeClassifier(max_depth=d, random_state=0)
tree.fit(X_train, y_train)
train.append(tree.score(X_train, y_train))
test.append(tree.score(X_test, y_test))Nessas luas, a profundidade 6 tem o melhor desempenho em novas linhas: mantenha-a, por enquanto. A partir da profundidade 8, a árvore é perfeita nas linhas que memorizou e tem desempenho pior nas demais.
Desafio
MédioUma pesquisa telescópica classifica objetos celestes em estrelas e galáxias. O código inicial os divide e prepara o gráfico.
- Para cada profundidade em
depths, treine uma árvore (random_state=0) e mantenha as duas acurácias. - Imprima a profundidade com a melhor acurácia de teste, como abaixo.
- Trace as duas linhas, identificadas como
trainetest, marque a melhor profundidade com uma linha tracejadaax.axvline, adicione uma legenda e exiba o gráfico.
Para um classificador de mangas:
Best depth: 5, test accuracy 0.867Em seguida, 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
# Uma linha por objeto celeste em um levantamento com telescópio: 1 em galaxy indica uma galáxia; 0, uma estrela
sky = pd.read_csv("sky.csv")
features = ["brightness_mag", "size_arcsec", "roundness", "color_index"]
X_train, X_test, y_train, y_test = train_test_split(sky[features], sky["galaxy"], test_size=0.25, random_state=0)
depths = range(1, 11)
fig, ax = plt.subplots()
ax.set_title("Star or Galaxy?")
ax.set_xlabel("Tree depth")
ax.set_ylabel("Accuracy")
# 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