🚀 Machine Learning Engineer Challenge
🎯 Visão Geral
Este repositório contém a solução completa para o Case Técnico de Machine Learning Engineer, implementando uma arquitetura profissional para predição de atrasos de voos usando FastAPI, Machine Learning e Docker.
🌟 Destaques do Projeto
graph TB
A[📊 Análise de Dados] --> B[🤖 Machine Learning]
B --> C[⚡ API FastAPI]
C --> D[🐳 Docker/Docker Compose]
D --> E[🧪 Testes Automatizados]
E --> F[📖 Documentação MkDocs]
style A fill:#e1f5fe
style B fill:#f3e5f5
style C fill:#e8f5e8
style D fill:#fff3e0
style E fill:#fce4ec
style F fill:#f1f8e9
🎯 Componentes do Sistema
| Componente | Descrição | Tecnologias |
|---|---|---|
| 📊EDA | Análise exploratória | Pandas, Jupyter Notebooks |
| 🤖ML Pipeline | Pipeline de ML | Scikit-learn, Feature Eng. |
| ⚡API REST | Serviço de predição | FastAPI, Pydantic |
| 🐳Containerização | Deploy com containers | Docker, Docker Compose |
| 🧪Testes | Testes unitários | Pytest, Coverage |
| 📖Documentação | Docs técnicas | MkDocs, Material Theme |
🚀 Começando Rapidamente
📋 Pré-requisitos
- 🐍 Python 3.12.7
- 📦 Poetry (gerenciador de dependências)
- 🐳 Docker e Docker Compose (opcional)
- 💻 Git para versionamento
⚡ Instalação Rápida
# 1. Clone o repositório
git clone https://github.com/ulissesbomjardim/machine_learning_engineer.git
cd machine_learning_engineer
# 2. Configure Python e Poetry
poetry env use 3.12.7
poetry install
# 3. Ative o ambiente virtual
poetry shell
# 4. Execute os testes
task test
# 5. Inicie a API
uvicorn src.routers.main:app --reload
API Rodando
🌐 API: http://localhost:8000
📚Swagger: http://localhost:8000/docs
📖Documentação: mkdocs serve
📁 Estrutura do Projeto
machine-learning-engineer/
├── 💻 src/
│ ├── routers/ # 🔗 Endpoints da API
│ │ ├── main.py # 🚀 App principal
│ │ └── model/ # 🤖 Rotas ML
│ └── services/ # ⚙️ Serviços
├── 🧪 tests/ # Testes unitários
├── 📊 data/ # Datasets
├── 🗄️ model/ # Modelos treinados
├── 📓 notebook/ # Jupyter Notebooks
├── 📖 docs/ # Documentação MkDocs
├── 🐳 docker/ # Configurações Docker
└── ⚙️ pyproject.toml # Dependências Poetry
🤖 Sobre o Challenge
🎯 Objetivo Principal
Desenvolver um sistema completo de predição de atrasos de voos que inclui:
- 📊 Análise exploratória dos dados históricos
- 🤖 Modelo de Machine Learning para classificação
- ⚡ API REST para predições em tempo real
- 🐳 Deploy containerizado para produção
- 🧪 Testes automatizados para garantir qualidade
📋 Funcionalidades Implementadas
| Endpoint | Método | Descrição |
|---|---|---|
/ |
GET | Informações da API |
/health |
GET | Status do sistema |
/docs |
GET | Documentação Swagger |
/model/predict |
POST | Predição de atraso |
/model/load |
GET/POST | Carregamento de modelos |
/model/history |
GET | Histórico de predições |
🧠 Pipeline de Machine Learning
graph LR
A[📊 Dados Brutos] --> B[🔧 Preprocessing]
B --> C[⚙️ Feature Engineering]
C --> D[🤖 Treinamento]
D --> E[📈 Avaliação]
E --> F[💾 Persistência]
F --> G[⚡ API Deployment]
style A fill:#e3f2fd
style B fill:#f3e5f5
style C fill:#e8f5e8
style D fill:#fff3e0
style E fill:#fce4ec
style F fill:#f1f8e9
style G fill:#e1f5fe
📚 Navegação da Documentação
🚀 Quick Start
- 📥 Instalação - Como instalar dependências
- ⚙️ Setup - Configuração do ambiente
- 🏃 Executando - Como rodar o projeto
🏗️ Arquitetura
- 📋 Visão Geral - Arquitetura do sistema
- 🧩 Componentes - Detalhes dos módulos
- 🤖 Pipeline ML - Fluxo de Machine Learning
🤖 Machine Learning
- 📊 Análise de Dados - EDA e insights
- 🔧 Preprocessing - Limpeza e transformação
- 🎯 Treinamento - Algoritmos e hiperparâmetros
- 📈 Avaliação - Métricas e validação
⚡ API Reference
- 🔗 Endpoints - Documentação completa da API
- 📋 Modelos - Schemas Pydantic
- 💡 Exemplos - Casos de uso práticos
🐳 Docker
🧪 Testes
- 🏃 Executando - Como rodar testes
- 📊 Coverage - Cobertura de código
- 🔄 Integração - Testes de integração
📓 Notebooks
- 📊 EDA - Análise exploratória
- 🤖 Modelagem - Desenvolvimento do modelo
- 🧪 Experimentos - Experimentos e otimização
🛠️ Comandos Úteis
📦 Poetry
poetry install # Instalar dependências
poetry shell # Ativar ambiente virtual
poetry add <package> # Adicionar pacote
🧪 Testes
⚡ API
uvicorn src.routers.main:app --reload # Desenvolvimento
uvicorn src.routers.main:app --host 0.0.0.0 --port 8000 # Produção
🐳 Docker
docker-compose up --build # Build e executar
docker-compose up # Executar containers
docker-compose down # Parar containers
📖 Documentação
🤝 Contribuindo
Este projeto segue as melhores práticas de desenvolvimento:
- 🎨 Formatação:
blackeisort - 🧪 Testes:
pytestcom cobertura - 📋 Linting:
ruffpara qualidade do código - 📖 Docs:
mkdocspara documentação
Para contribuir:
- Fork o repositório
- Crie uma branch para sua feature
- Execute os testes:
task test - Faça commit das mudanças
- Abra um Pull Request
📞 Suporte
- 📧 Email: ulisses.bomjardim@gmail.com
- 🐛 Issues: GitHub Issues
- 💡 Discussões: GitHub Discussions
**🎉 Explore a documentação para descobrir todos os recursos! 🎉**
*📅 Última atualização: 2024-12-21*