Projeto 01 – Modelo de Machine Learning para área de logística – deploy em Flask

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

  1. 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.
  2. 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.
  3. 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.
  4. 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!!!

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *