Introdução
Neste tutorial, vamos explorar a implementação de uma aplicação de previsão de demanda utilizando técnicas de Machine Learning. Usaremos Python como linguagem de programação, Pandas para manipulação e análise de dados, Scikit-Learn para construir e treinar nosso modelo de previsão, e Flask para criar uma API que servirá as previsões em um ambiente web. O objetivo deste guia é fornecer um passo a passo desde a preparação dos dados, passando pela criação e avaliação do modelo, até a implementação da API. Você terá uma compreensão prática de como integrar diferentes ferramentas e bibliotecas para resolver um problema real de previsão de demanda, que é muito relevante no contexto de negócios e logística.
Etapas
Configuração do Ambiente de Desenvolvimento
Certifique-se de ter o Python e o pip instalados em sua máquina. Você pode verificar isso executando os comandos `python –version` e `pip –version` no terminal. Caso não esteja instalado, siga as instruções no site oficial do Python.
commands# Verificar versões instaladas
python --version
pip --versionInstalação das Dependências
Crie um novo diretório para o projeto e instale as bibliotecas necessárias utilizando pip. As bibliotecas necessárias incluem Pandas, Scikit-Learn e Flask.
commands# Criar diretório do projeto
mkdir previsao_demanda
cd previsao_demanda
# Criar e ativar ambiente virtual
python -m venv venv
source venv/bin/activate # Para Windows, use venv\Scripts\activate
# Instalar dependências
pip install pandas scikit-learn flaskPreparação dos Dados
Para este exemplo, vamos usar um conjunto de dados fictício que contém informações sobre vendas. Crie um arquivo `dados.csv` com colunas como ‘Data’, ‘Demanda’, ‘Precipitação’, e ‘Temporada’. Em seguida, carregue este conjunto de dados usando Pandas.
dataData,Demand,Precipitation,Season 2023-01-01,200,0.3,Summer 2023-01-02,220,0.1,Summer 2023-01-03,250,0.0,Summer 2023-01-04,260,0.0,Summer 2023-01-05,240,0.1,Summer
pythonimport pandas as pd dados = pd.read_csv('dados.csv') print(dados.head())
Análise Exploratória dos Dados
Realize uma análise exploratória para entender melhor os dados. Isso inclui visualizar distribuições, calcular correlações e preparar os dados para a modelagem.
pythonimport seaborn as sns import matplotlib.pyplot as plt # Visualizar a correlação correlation = dados.corr() sns.heatmap(correlation, annot=True) plt.show()
Divisão dos Dados em Conjuntos de Treinamento e Teste
Divida os dados em conjuntos de treinamento e teste. Para isso, utilizaremos a função `train_test_split` do Scikit-Learn.
pythonfrom sklearn.model_selection import train_test_split # Definir as variáveis independentes e dependentes dependentes = dados[['Precipitação', 'Temporada']] independentes = dados['Demand'] # Dividir os dados X_train, X_test, y_train, y_test = train_test_split(dependentes, independentes, test_size=0.2, random_state=42)
Treinamento do Modelo de Machine Learning
Utilize um modelo de regressão linear do Scikit-Learn para prever a demanda. Treine o modelo com os dados de treinamento.
pythonfrom sklearn.linear_model import LinearRegression modelo = LinearRegression() modelo.fit(X_train, y_train)
Avaliação do Modelo
Avalie o desempenho do modelo utilizando métricas como MAE (Mean Absolute Error) e R².
pythonfrom sklearn.metrics import mean_absolute_error, r2_score previsoes = modelo.predict(X_test) mae = mean_absolute_error(y_test, previsoes) r2 = r2_score(y_test, previsoes) print(f'MAE: {mae}') print(f'R²: {r2}')
Implementação da API com Flask
Crie uma aplicação Flask que expõe um endpoint para receber dados e retornar previsões a partir do modelo treinado.
appfrom flask import Flask, request, jsonify app = Flask(__name__) @app.route('/prever', methods=['POST']) def prever(): dados = request.json previsao = modelo.predict([[dados['precipitacao'], dados['temporada']]]) return jsonify({'demanda_prevista': previsao[0]}) if __name__ == '__main__': app.run(debug=True)
Testando a API
Utilize uma ferramenta como Postman ou cURL para testar o endpoint da API e verificar as previsões geradas.
commands# Testar a API usando cURL
curl -X POST -H "Content-Type: application/json" -d '{"precipitacao": 0.2, "temporada": "Verão"}' http://127.0.0.1:5000/preverExecutando a Aplicação
Inicie a aplicação Flask e verifique se está funcionando corretamente.
commands# Executar a aplicação Flask
python app.py
Conclusão
Neste tutorial, abordamos como implementar uma aplicação de previsão de demanda utilizando Python, Pandas, Scikit-Learn e Flask. Passamos pela preparação dos dados, construção e avaliação do modelo, e finalmente a implementação de uma API para acessar as previsões. Com isso, você possui uma base sólida para desenvolver aplicativos de previsão no futuro e uma compreensão prática de como as diferentes ferramentas se integram em um fluxo de trabalho funcional.