Capítulo 28
Treino, teste e avaliação
3 min de leitura 526 palavras 1 gravura
Neste capítulo você vai separar dados e evitar autoengano. O projeto de estudo é o Observatório do Recife, um núcleo fictício de monitoramento urbano e climático.
Seu ponto de partida
O exemplo deste capítulo é 28-ml-avaliacao, no pacote que acompanha o volume; pratique sobre uma cópia da pasta inicio/. A raiz do exemplo é a referência desta etapa. Abrir ou rodar localmente não publica nada. Servidor, se precisar, só em 127.0.0.1.
Como praticar
Leia, confira o código, mude uma coisa, preveja, salve, rode de novo e confira. Investigue o erro antes de avançar.

Um resultado antes de outro conceito
O script Python lê dados locais do Observatório e imprime um resultado que você pode conferir.
Faça na sua cópia
A implementação completa está no pacote de exemplos que acompanha este volume.
# Capítulo 28 — treino e teste
from pathlib import Path
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
root = Path(__file__).resolve().parent
df = pd.read_csv(root / "dados" / "leituras.csv")
df["classe"] = (df["chuva_mm"] >= 1.0).astype(int)
Mude uma coisa e preveja
Altere um parâmetro (limiar, coluna ou random_state) e preveja a mudança.
Anote o que espera observar antes de salvar e rodar de novo.
Recarregue e confira
A saída no terminal reflete só a mudança pedida.
Se não acontecer
Confira se salvou a cópia certa e se o caminho dos dados aponta para dados/ dentro da pasta do exemplo.
Ambiente local
Use Python 3 na sua máquina. Pacotes extras só quando o capítulo pedir. Nada de conta cloud obrigatória.
Faça na sua cópia
A implementação completa está no pacote de exemplos que acompanha este volume.
python analise.py
Mude uma coisa e preveja
Rode duas vezes seguidas. A saída deve ser estável (salvo gráficos com relógio).
Anote o que espera observar antes de salvar e rodar de novo.
Recarregue e confira
Scripts determinísticos com random_state fixo ajudam a conferência.
Se não acontecer
Confira se salvou a cópia certa e se o caminho dos dados aponta para dados/ dentro da pasta do exemplo.
Erro comum
Faltar pacote (pandas, sklearn) ou apontar CSV errado. Instale no venv local e confira dados/.
Faça na sua cópia
A implementação completa está no pacote de exemplos que acompanha este volume.
pip install pandas matplotlib scikit-learn
Mude uma coisa e preveja
Liste os arquivos em dados/ antes de rodar.
Anote o que espera observar antes de salvar e rodar de novo.
Recarregue e confira
Você deve ver bairros, estacoes, leituras e alertas.
Se não acontecer
Confira se salvou a cópia certa e se o caminho dos dados aponta para dados/ dentro da pasta do exemplo.
Atividades
Responda antes de olhar as respostas comentadas no final.
-
Qual o objetivo deste capítulo?
-
Os dados podem ir para produção?
-
Onde fica a referência pronta?
Antes de avançar
- Você conseguiu separar dados e evitar autoengano.
- A cópia
inicio/roda sem depender de conta paga. - Você distingue arquivo local, resultado na tela e publicação pública.
Respostas comentadas
Atividade 1
separar dados e evitar autoengano
Atividade 2
Não — são fictícios e só para estudo.
Atividade 3
Na raiz da pasta do exemplo; pratique em inicio/.
O arquivo completo
Referência do exemplo 28-ml-avaliacao, reproduzida aqui para que você possa conferir sem sair da página.
analise.py
# Capítulo 28 — treino e teste
from pathlib import Path
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
root = Path(__file__).resolve().parent
df = pd.read_csv(root / "dados" / "leituras.csv")
df["classe"] = (df["chuva_mm"] >= 1.0).astype(int)
X = df[["temp_c", "umidade"]]
y = df["classe"]
Xtr, Xte, ytr, yte = train_test_split(X, y, test_size=0.34, random_state=42)
modelo = LogisticRegression(max_iter=200).fit(Xtr, ytr)
pred = modelo.predict(Xte)
print("Acuracia no teste:", round(accuracy_score(yte, pred), 2))