Fase 4 6 horas Avançado

A Subida de Recuperação

Depois do salto, a subida exige inteligência — não só força. Aqui você recore ao cérebro artificial para tomar decisões melhores a cada pedalada.

Fase 4 — A Subida de Recuperação · IA e Machine Learning
Progresso: 0/8 (0%)

Objetivos da Fase

O que você vai aprender:

  • O que é Machine Learning e quando usá-lo
  • Árvores de decisão com scikit-learn
  • Dados de treino vs. dados de teste
  • Listas de dados estruturados (features + labels)
  • Avaliação de acurácia de modelos
  • Bots inteligentes: tomada de decisão por predição
  • Integração de IA no simulador do Circuito

O que você vai criar:

  • Modelo de classificação de corredores
  • Preditor de resultado do salto (buraco/voo)
  • Bot que sugere velocidade ideal para a rampa
  • Relatório de acurácia com dados históricos

4.1 — O Problema que a IA Resolve

Treinar 100 pilotos manualmente é inviável. Mas se tivermos os dados históricos de 6 corridas — peso, velocidade, inclinação, resultado — podemos ensinar uma máquina a decidir.

📊 Dados de treino do Circuito Ferradura

Features (entradas): [velocidade, peso, inclinação_rampa]
Label (saída): 0 = BURACO, 1 = QUASE, 2 = VOOU, 3 = LENDÁRIO

# Dataset do Circuito Ferradura — corridas históricas X_treino = [ [4.5, 65, 15], # velocidade, peso (kg), inclinação (°) [7.0, 70, 20], [9.5, 60, 25], [11.0, 55, 30], [3.0, 80, 10], [8.5, 63, 22], [6.5, 72, 18], [12.0, 58, 35], ] y_treino = [0, 1, 2, 3, 0, 2, 1, 3] # BURACO, QUASE, VOOU, LENDÁRIO CLASSES = ["BURACO", "QUASE", "VOOU", "LENDÁRIO"]

4.2 — Treinando o Modelo

from sklearn.tree import DecisionTreeClassifier from sklearn.metrics import accuracy_score # Treinar a árvore de decisão modelo = DecisionTreeClassifier(max_depth=4, random_state=42) modelo.fit(X_treino, y_treino) # Prever resultado para um novo piloto novo_piloto = [[8.0, 67, 21]] predicao = modelo.predict(novo_piloto) print(f"Resultado previsto: {CLASSES[predicao[0]]}") Resultado previsto: VOOU # Acurácia no conjunto de treino precisao = accuracy_score(y_treino, modelo.predict(X_treino)) print(f"Acurácia: {precisao:.0%}") Acurácia: 100%

4.3 — Bot Inteligente de Corrida

Com o modelo treinado, criamos um bot que analisa as condições da pista em tempo real e sugere a velocidade ideal para o salto.

class BotFerradura: def __init__(self, modelo, classes): self.modelo = modelo self.classes = classes def analisar(self, velocidade: float, peso: float, inclinacao: float) -> str: entrada = [[velocidade, peso, inclinacao]] codigo = self.modelo.predict(entrada)[0] resultado = self.classes[codigo] if codigo == 0: dica = "⚠️ Aumente a velocidade! Risco de buraco." elif codigo == 3: dica = "🏆 Velocidade lendária! Segure o guidão." else: dica = f"✅ Resultado previsto: {resultado}" return dica bot = BotFerradura(modelo, CLASSES) print(bot.analisar(9.0, 65, 25)) ✅ Resultado previsto: VOOU

✅ Checklist da Fase 4

🤖 Projeto da Fase 4

Expanda o dataset para 20 corridas, separe 80% para treino e 20% para teste real, avalie a acurácia no conjunto de teste, e ajuste o max_depth para encontrar o modelo mais equilibrado (sem overfitting). Documente os resultados.

🔒 LGPD — Usamos localStorage para salvar progresso.