Por que as florestas funcionam
Parte da seção Aprendizado supervisionado do Journey de Machine Learning da Coddy. Lição 42 de 58.
As árvores de uma floresta diferem de propósito. Cada uma é treinada com uma amostra bootstrap: linhas selecionadas aleatoriamente com reposição, de modo que algumas se repetem e outras ficam de fora.
Cada pergunta também seleciona alguns recursos aleatórios. As árvores cometem erros diferentes, e a votação os cancela. Duas espécies de vaga-lumes:
A floresta mantém uma faixa apenas onde a maioria das árvores concorda.
As árvores estão em forest.estimators_:
third = forest.estimators_[2]
print(round(third.score(X_test, y_test), 3))Isso imprime 0.737. A floresta inteira pontua 0.895.
Desafio
MédioUma floresta supera suas próprias árvores? O código inicial ajusta forest usando riders.csv, com ciclistas que concluíram ou não um percurso de 160 km em menos de 6 horas, e configura o gráfico.
- Calcule a pontuação de cada árvore da floresta nas linhas de teste.
- Crie um histograma das pontuações, com
bins=10, e marqueforest_acccom uma linha vertical vermelha. - Imprima quantas árvores a floresta supera.
Em outro percurso, foi impresso The forest beats 88 of its 100 trees e desenhado o seguinte:
Em seguida, Coddy descreve seu gráfico.
Experimente você mesmo
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
# Participantes de um pedal beneficente de 160 km: terminaram em menos de 6 horas (1) ou não (0)
riders = pd.read_csv("riders.csv")
features = ["weekly_km", "long_ride_km", "age", "years_riding", "rest_days", "sleep_hours"]
X = riders[features].to_numpy() # um array simples, no formato que as árvores da floresta esperam
y = riders["under_6h"].to_numpy()
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
forest = RandomForestClassifier(n_estimators=100, random_state=0)
forest.fit(X_train, y_train)
forest_acc = forest.score(X_test, y_test)
fig, ax = plt.subplots()
ax.set_title("The Forest and Its Trees")
ax.set_xlabel("Test accuracy")
ax.set_ylabel("Trees")
# 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éstimo9Métodos ensemble
Florestas aleatóriasPor que as florestas funcionamBoosting de gradienteRevisão: Guarda-florestalPratique por conta própria: Compilador de Python online