API REST desenvolvida com FastAPI para previsão da demanda de bicicletas compartilhadas utilizando um modelo de Machine Learning baseado em XGBoost otimizado com Optuna.
Este projeto demonstra uma etapa completa de implantação de um modelo de Machine Learning, desde a exportação do modelo treinado até sua disponibilização por meio de uma API para inferência.
O modelo foi treinado utilizando o conjunto de dados Bike Sharing Dataset, cujo objetivo é prever a quantidade de bicicletas alugadas em determinado instante com base em informações como:
- estação do ano;
- mês;
- hora do dia;
- dia da semana;
- feriados;
- condições climáticas;
- temperatura;
- umidade;
- velocidade do vento.
Antes da inferência, os dados passam automaticamente pelas mesmas etapas de engenharia de atributos utilizadas durante o treinamento, garantindo consistência entre treinamento e produção.
api-bike-demand/
│
├── artifacts/
│ ├── bike_sharing_xgb_model.joblib
│ ├── ...
│
├── predictor.py
├── app.py
├── schemas.py
├── requirements.txt
├── README.md
└── .gitignore
- Python 3.11+
- FastAPI
- XGBoost
- Scikit-Learn
- Pandas
- Joblib
- Uvicorn
- Pydantic
git clone https://github.com/seu-usuario/api-bike-demand.gitEntre na pasta do projeto:
cd api-bike-demandWindows
python -m venv .venv
.venv\Scripts\activateLinux / macOS
python3 -m venv .venv
source .venv/bin/activatepip install -r requirements.txtuvicorn app:app --reloadA API será iniciada em:
http://127.0.0.1:8000
O FastAPI gera automaticamente uma interface interativa para testes.
Após iniciar a aplicação, acesse:
http://127.0.0.1:8000/docs
Nessa interface é possível:
- visualizar os endpoints;
- testar requisições;
- visualizar exemplos de entrada e saída;
- validar automaticamente os dados enviados.
Verifica se a API está em funcionamento.
{
"message": "Bike Demand Prediction API"
}Realiza a previsão da demanda de bicicletas.
{
"instant": 5000,
"season": 3,
"yr": 1,
"mnth": 9,
"hr": 17,
"holiday": 0,
"weekday": 2,
"workingday": 1,
"weathersit": 1,
"temp": 0.70,
"atemp": 0.68,
"hum": 0.45,
"windspeed": 0.10
}{
"prediction": 612.48
}A cada requisição, a API executa automaticamente as seguintes etapas:
- Recebe os dados enviados pelo cliente.
- Valida os dados utilizando Pydantic.
- Converte os dados para um DataFrame do Pandas.
- Aplica a mesma engenharia de atributos utilizada durante o treinamento.
- Carrega o modelo previamente treinado.
- Realiza a inferência.
- Retorna a previsão ao cliente.
Modelo utilizado:
- XGBoost Regressor
O modelo foi otimizado utilizando Optuna, que realizou a busca automática pelos melhores hiperparâmetros antes da etapa de implantação.
Este projeto foi desenvolvido como parte do curso Modelos Regressivos: Avançando nos Modelos de Regressão.
O objetivo é demonstrar como transformar um modelo treinado em uma aplicação pronta para consumo por outros sistemas utilizando FastAPI.
Este projeto possui finalidade exclusivamente educacional.