Autor: Everton S. Moraes
Projeto desenvolvido como Trabalho de Conclusão de Curso (TCC) no MBA em Data Science & Analytics (USP/ESALQ), com o objetivo de agrupar municípios brasileiros a partir de indicadores socioeconômicos públicos, utilizando técnicas de Machine Learning não supervisionado.
🚀 A solução permite identificar perfis municipais semelhantes, apoiando análises comparativas (benchmarking) e contribuindo para a tomada de decisão na gestão pública.
Aplicar o algoritmo K-means para agrupar municípios brasileiros com base em indicadores socioeconômicos públicos, visando identificar perfis semelhantes que possam subsidiar práticas de benchmarking na gestão pública.
- Desenvolver agrupamentos de municípios com base em diferentes grupos de indicadores:
- 📍 Territoriais
- 👥 Populacionais
- 🎓 Educacionais
- 🏥 Sociais e de saúde
- 💰 Econômicos
- 🏗️ Estruturais
- Avaliar a qualidade dos agrupamentos utilizando múltiplas métricas de validação:
- Razão das Variâncias (VRC)
- Critério de Silhueta
- Índice de Jaccard
- Bayesian Information Criterion (BIC)
- Avaliar a viabilidade de integração dos agrupamentos em um modelo geral de similaridade municipal.
- Fonte: Instituto Brasileiro de Geografia e Estatística (IBGE)
- Coleta via API pública
- Abrangência: 5.570 municípios brasileiros
- Total de indicadores utilizados: 38
O processo metodológico foi estruturado nas seguintes etapas:
- Extração dos dados via API do IBGE
- Tratamento e estruturação das bases
- Padronização das variáveis utilizando Z-score
- Aplicação do algoritmo K-means por grupo de indicadores
- Teste de múltiplos valores de k (100 a 500, com incremento de 5)
- Avaliação da qualidade dos agrupamentos por métricas de validação
- Construção de um score ponderado para definição do melhor k
- Análise comparativa dos agrupamentos obtidos
Este gráfico demonstra o comportamento das métricas ao longo dos diferentes valores de k, evidenciando que o aumento do número de clusters não implica necessariamente melhoria na qualidade estrutural dos agrupamentos.
As métricas foram normalizadas e combinadas em um score ponderado, permitindo identificar de forma mais robusta o número ótimo de clusters.
Foram utilizadas múltiplas métricas para garantir uma avaliação robusta dos clusters:
- Critério de Silhueta: Avalia a coesão interna e a separação entre clusters
- Razão das Variâncias (VRC): Mede a relação entre dispersão intra e inter-clusters
- Índice Jaccard: Avalia a estabilidade dos agrupamentos
- BIC (Bayesian Information Criterion): Penaliza a complexidade do modelo
📌 Diferencial do projeto: As métricas foram normalizadas e combinadas em um score ponderado, permitindo uma decisão mais consistente na escolha do número ótimo de clusters.
O projeto foi estruturado para permitir a reconstrução completa dos dados a partir do código, garantindo reprodução dos resultados.
- Coleta automática via API
- Tratamento e padronização dos dados
- Modelagem e avaliação dos clusters
- Geração de resultados e visualizações
.
Projeto_TCC/
├── funcoes_tcc.py # Biblioteca central do projeto, responsável por concentrar funções reutilizáveis.
├── 00_discovery.py # Script de análise exploratória (discovery) para a coleta, analise e definição dos indicadores a serem utilizados no projeto.
├── 01_desenvolvimento.py # Script com todas as etapads do projeto desde a coleta de dados aos resultados
├── arquivos/
│ ├── entrada/ # Arquivos de entrada (lista de municipios brasileiros, indicadores selecionados ,etc)
│ ├── rotina/ # Arquivos gerados durante execução da(s) rotina(s)
│ ├── saida/ # Arquivos de resultados e outputs gerados durante execução da(s) rotina(s)
├── imgs/ # Diretório com as imagens, gráficos, tabelas geradas durante as execuções da(s) rotina(s)
├── .spyproject/ # Diretório criado automaticamente pelo ambiente de desenvolvimento integrado (IDE) Spyder
├── README.md # Documento de introdução e documentação a este projeto