Do entendimento do problema ao deploy
Os modelos de machine learning têm um papel crucial nas indústrias, possibilitando a criação de ferramentas que aprimoram o dia a dia das operações. No contexto da logística de produtos, surge a necessidade de resolver um problema específico.
Neste projeto, foi criado um modelo de machine learning para previsão de uma variável e realizado o deploy em uma aplicação web, com o objetivo de solucionar um problema específico encontrado na empresa fictícia “GadgetDotCom”.
01 – Contextualização do Problema:
A empresa GadgetDotCom enfrenta desafios em sua linha de produção, especificamente na identificação rápida do conteúdo dos pacotes, como celulares, tablets ou notebooks, para garantir seu manuseio adequado e evitar danos tanto para a empresa quanto para os clientes. Atualmente, dispõe apenas de duas variáveis: peso em gramas e tipo de embalagem.
Solução: Este projeto visa desenvolver uma ferramenta web baseada em um modelo de Machine Learning capaz de prever o tipo de produto na embalagem com base nas variáveis peso e tipo de embalagem. Isso permitirá aos funcionários adotarem protocolos adequados de manuseio para os produtos, por exemplo, posicionando pacotes mais delicados de maneira mais cuidadosa
02 – Implementação
- Coleta de Dados: Coletar dados sobre peso e tipo de embalagem de diversos produtos para construir o conjunto de dados necessário para treinar o modelo.
- Desenvolvimento do Modelo: Utilizando técnicas de Machine Learning, o modelo será treinado para correlacionar peso e tipo de embalagem e prever o conteúdo dos pacotes.
- Avaliação e Otimização: Após o treinamento, o modelo será avaliado quanto à sua precisão na previsão do conteúdo das embalagens, utilizando um conjunto de dados de teste.
- Deploy: Uma vez treinado e otimizado, o modelo será implementado em uma aplicação web, permitindo que os funcionários insiram o peso e escolham o tipo de embalagem para receber a previsão do conteúdo do produto.
03 – Elencando os Benefícios:
Uma implementação bem-sucedida trará uma série de benefícios, incluindo a redução de danos aos produtos eletrônicos, uma otimização dos protocolos de armazenagem e transporte, resultando em maior satisfação para os clientes, além de economia financeira com perdas de produtos e redução de custos operacionais para a empresa.
Codando…
Começo configurando o Git para gerenciar as versões do projeto. Em seguida, é importante instalar as versões específicas das bibliotecas necessárias para garantir a compatibilidade e o bom funcionamento do projeto. Essa etapa é crucial para evitar conflitos e garantir a estabilidade do código ao longo do desenvolvimento.
~pip install -r requirements.txt
Após a instalação das bibliotecas, vem a parte de importação delas, juntamente com os pacotes que iremos usar. Isso nos prepara para utilizar suas funcionalidades.
import pandas as pd
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
Agora, entramos na fase de extração de dados. Aqui, criei um dicionário contendo informações sobre o peso, tipo de embalagem e tipo de produto. Transformei esse dicionário em um DataFrame e verifiquei o resultado.
<bound method NDFrame.head of Peso_Embalagem Tipo_Embalagem Tipo_Produto
0 198 Caixa de Papelão Smartphone
1 698 Plástico Bolha Tablet
2 144 Caixa de Papelão Smartphone
3 712 Plástico Bolha Tablet
4 212 Caixa de Papelão Smartphone
5 700 Plástico Bolha Tablet
6 208 Caixa de Papelão Smartphone
7 205 Caixa de Papelão Smartphone
8 225 Caixa de Papelão Tablet
9 711 Plástico Bolha Tablet
10 723 Plástico Bolha Smartphone
11 225 Caixa de Papelão Smartphone>
Para facilitar a manipulação dos dados, os dividi em variáveis de entrada e de saída.
#Separar as variaveis em entrada e saida
X = df[['Peso_Embalagem', 'Tipo_Embalagem']] #entrada
y = df.Tipo_Produto #saida
Em seguida, separei os dados em conjuntos de treinamento e teste, seguindo a proporção padrão de 80-20.
#Dividir em dados de treino e teste
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size=0.2, random_state=1)
Para que o modelo possa entender e processar melhor os dados, realizei a codificação das variáveis categóricas para numéricas.
Após a preparação dos dados, é hora de escolher o modelo de predição mais adequado. Neste caso, optei por utilizar a árvore de decisão.
mdl_logistica = DecisionTreeClassifier()
Com o modelo selecionado, é chegada a fase de treinamento. Aqui, alimento o modelo com os dados disponíveis para que ele aprenda os padrões e relações necessárias.
mdl_logistica.fit(X_train, y_train)
Após o treinamento, avanço para a etapa de predição. O modelo, agora ajustado aos dados, é capaz de fazer previsões com base em novas entradas.
y_pred = mdl_logistica.predict(X_test)
Avaliar a eficácia do modelo é crucial. Para isso, comparo as previsões feitas pelo modelo com os resultados reais, calculando métricas como a acurácia.
modelo_acc_logistica = accuracy_score(y_test, y_pred)
Acurácia: 0.67
Relatório de Classificação
precision recall f1-score support
0 0.50 1.00 0.67 2
1 1.00 0.50 0.67 1
accuracy 0.67 3
macro avg 0.75 0.75 0.67 3
weighted avg 0.83 0.67 0.67 3
Após a avaliação, descobri que o modelo tem uma acurácia de 67%. Isso significa que ele está correto em aproximadamente dois terços das previsões feitas.
Com o modelo treinado e avaliado, agora é hora de colocá-lo em uso. Para isso, fazemos o deploy da aplicação para que outros possam utilizá-la.
Para facilitar o deploy, desenvolvemos um aplicativo em Flask, um microframework para desenvolvimento web em Python. Este aplicativo torna o modelo acessível via interface web.
Abaixo, listamos algumas das bibliotecas e funções criadas durante este processo, simplificando a estrutura e mostrando como o código foi organizado.
# Bibliotecas
from flask import Flask, render_template, request, jsonify
import joblib
@app.route('/', methods = ['GET'])
def index():
# Renderiza a página inicial usando o template.html
return render_template('template.html')
# App
if __name__ == '__main__':
app.run()
E por último, apresento a aplicação, para que você possa ter uma compreensão mais clara de do funcionamento geral do sistema.
Se houver alguma dúvida ou algo que não esteja claro, não hesite em entrar em contato.
Grande abraço!!!
Uma resposta para “Projeto 01 – Modelo de Machine Learning para área de logística – deploy em Flask”
[…] formos trabalhar com modelos de ML, utilizando técnicas de codificação. No Projeto 01 – Modelo de Machine Learning para área de logística – deploy em Flask realizo uma rotina de codificação, com técnicas de encoder, para as variáveis “tipo da […]