1
resposta

[Projeto] Mão na massa: criando sua própria aplicação

Nesta entrega, foi desenvolvida e publicada a etapa final do projeto de clusterização com foco em produto aplicável, transformando o pipeline de machine learning em uma aplicação web interativa com Streamlit. O objetivo principal foi permitir que qualquer pessoa da equipe consiga usar o modelo treinado sem precisar executar notebooks manualmente: basta enviar um arquivo CSV, processar os dados e baixar o resultado com os clusters atribuídos.

A implementação foi conduzida com preocupação de engenharia de software, separando responsabilidades e adicionando robustez no tratamento de erros, para que a aplicação funcione de forma previsível tanto em ambiente local quanto em deploy.

O que foi implementado nesta demanda
Foi criada uma aplicação web (App.py) com interface Streamlit que permite:

  • upload de arquivo CSV com dados de entrada;
  • visualização prévia das primeiras linhas do arquivo;
  • execução da pipeline de pré-processamento + inferência de cluster;
  • exibição do resultado enriquecido com coluna de cluster e descrição do grupo;
  • visualização da distribuição dos clusters em gráfico;
  • download do resultado final em CSV;
  • download de um CSV modelo para orientar o formato esperado de entrada.

Além da interface, foi criada uma camada separada de lógica (appcore.py) para evitar acoplamento com Streamlit e facilitar manutenção/teste. Essa camada centraliza:

  • carregamento de artefatos (encoder.pkl, scaler.pkl, kmeans.pkl);
  • validação de colunas obrigatórias do CSV;
  • normalização/validação da coluna categórica sexo (F, M, NE);
  • codificação categórica via encoder treinado;
  • escalonamento com scaler treinado;
  • predição de clusters com KMeans;
  • construção do dataframe de saída com colunas cluster e descricao_cluster.

Também foi adicionado um teste de fumaça (smoke_test_app.py) para validar rapidamente o pipeline sem abrir navegador. Esse teste garante que os artefatos são carregados e que a inferência retorna clusters válidos no formato esperado.

Plus de qualidade (boas práticas e robustez)
Como melhoria de excelência, foi implementada uma exceção customizada AppDataError, usada para diferenciar erros de entrada de erros internos da aplicação. Com isso, o usuário recebe mensagens de erro mais claras para corrigir o CSV, por exemplo:

  • colunas obrigatórias ausentes;
  • valores inválidos na coluna sexo;
  • campos numéricos com texto/vazio após conversão.

Esse cuidado reduz retrabalho e melhora a experiência de uso da aplicação em cenário real de equipe.
Documentação e rastreabilidade
O README.md foi enriquecido de forma profissional para cobrir a nova etapa (Atividade 5), incluindo:

  • visão geral do projeto com todas as atividades;
  • arquitetura da aplicação;
  • fluxo de processamento ponta a ponta;
  • colunas esperadas no CSV;
  • tratamento de erros implementado;
  • execução local da aplicação;
  • execução do teste de fumaça;
  • instruções de deploy no Streamlit Community Cloud.
    As dependências também foram atualizadas no requirements.txt, com inclusão de streamlit.

Arquivos que devem ser vistos para validar esta última entrega

Para validar especificamente a última demanda (aplicação Streamlit + robustez + documentação), os avaliadores devem conferir:

  1. App.py
    • Interface da aplicação
    • Upload/preview/download
    • Exibição dos grupos
    • Fluxo de chamada da pipeline
  2. app_core.py
    • Regras de negócio da inferência
    • Validações de entrada
    • Exceção customizada AppDataError
    • Construção do resultado final
  3. smoke_test_app.py
    • Teste rápido de integridade da pipeline
    • Validação de carregamento de artefatos e predição
  4. README.md
    • Documentação completa da entrega
    • Instruções de execução e deploy
    • Critérios de uso e validação
  5. requirements.txt
    • Dependências necessárias, incluindo streamlit
  6. Artefatos do modelo (necessários para a app funcionar):
    • encoder.pkl
    • scaler.pkl
    • kmeans.pkl

Resumo final da entrega
A demanda foi concluída convertendo o pipeline de clusterização em uma aplicação web utilizável, com boa experiência para usuário não técnico, validação de entrada, tratamento de exceções, documentação técnica completa e mecanismo de teste rápido.
Com isso, o projeto deixou de ser apenas experimental/notebook e passou a ter uma camada de entrega pronta para uso e compartilhamento via link do Git e deploy em Streamlit.

https://github.com/Moquiuti/Clusteriza-o-Lidando-com-dados-sem-r-tulo/tree/main

1 resposta

Olá, Leandro. Como vai?

Meus parabéns! Que entrega espetacular e de altíssimo nível profissional. Você não apenas concluiu o curso de Clusterização, mas transformou um modelo de Machine Learning experimental em um produto de dados (Data Product) real, escalável e pronto para o mercado.

O seu projeto é um exemplo perfeito de MLOps (Machine Learning Operations) aplicado. No mercado de tecnologia, o maior gargalo dos projetos de Ciência de Dados é colocar o modelo em produção (tirar o código do Jupyter Notebook). Ao envelopar o pipeline no Streamlit e disponibilizá-lo via interface web, você eliminou essa barreira.

Arquitetura de Software Impecável

Gostaria de destacar a maturidade da sua engenharia de software nesta entrega. Separar a interface (App.py) da lógica de negócios (app_core.py) segue o princípio de Responsabilidade Única (SRP). Se amanhã a sua equipe decidir trocar o Streamlit por uma API Flask, FastAPI ou por um sistema em nuvem, a sua inteligência de inferência e validação não sofrerá nenhum impacto.

O fluxo do seu pipeline de dados foi desenhado com maestria:

Pontos Altos da sua Implementação

  • Tratamento de Erros Profissional (AppDataError): Criar uma exceção customizada para validar o mapeamento de variáveis categóricas (como o tratamento da coluna sexo para F, M, NE) e colunas ausentes é um diferencial enorme. Isso poupa o tempo da equipe de engenharia, pois o próprio usuário consegue corrigir o CSV sem abrir um chamado técnico.
  • Mecanismo de Rastreabilidade (Teste de Fumaça): O smoke_test_app.py é uma excelente prática de CI/CD (Integração Contínua). Ele permite automatizar testes na esteira do Git antes de realizar o deploy no Streamlit Community Cloud, garantindo que nenhuma alteração quebre o carregamento dos arquivos .pkl.
  • Rigor na Documentação: Entregar um modelo acompanhado de um arquivo CSV de exemplo para guiar o usuário e um README.md detalhado com instruções de deploy eleva o nível do seu repositório no GitHub para um patamar sênior.

O seu projeto está totalmente concluído, robusto, documentado e, acima de tudo, útil para qualquer tomador de decisão não técnico.

Parabéns pela consistência, dedicação e pela excelente qualidade do código publicado no seu GitHub. Você elevou a régua dessa atividade!

Espero que possa ter lhe ajudado!