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:
- App.py
- Interface da aplicação
- Upload/preview/download
- Exibição dos grupos
- Fluxo de chamada da pipeline
- app_core.py
- Regras de negócio da inferência
- Validações de entrada
- Exceção customizada AppDataError
- Construção do resultado final
- smoke_test_app.py
- Teste rápido de integridade da pipeline
- Validação de carregamento de artefatos e predição
- README.md
- Documentação completa da entrega
- Instruções de execução e deploy
- Critérios de uso e validação
- requirements.txt
- Dependências necessárias, incluindo streamlit
- 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