Menu
CoddyTech

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:

Dois gráficos com 150 vaga-lumes, com a duração do lampejo no eixo horizontal e a pausa no vertical, círculos azuis para uma espécie e triângulos vermelhos para a outra. À esquerda, uma árvore: sua fronteira tem faixas estreitas que se estendem até vaga-lumes isolados. À direita, uma floresta de 100 árvores: uma fronteira suave entre os grupos

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.

challenge icon

Desafio

Médio

Uma 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.

  1. Calcule a pontuação de cada árvore da floresta nas linhas de teste.
  2. Crie um histograma das pontuações, com bins=10, e marque forest_acc com uma linha vertical vermelha.
  3. Imprima quantas árvores a floresta supera.

Em outro percurso, foi impresso The forest beats 88 of its 100 trees e desenhado o seguinte:

Um histograma intitulado The Forest and Its Trees: as precisões de teste das árvores vão de cerca de 0.53 a 0.85, a maioria perto de 0.70, e uma linha vertical vermelha perto de 0.77, à direita da maioria das barras

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