Olá, pessoal!
Nesta etapa, dei continuidade ao fluxo de clusterização buscando otimizar o resultado dos agrupamentos gerados pelo modelo KMeans. Depois de preparar os dados e aplicar a codificação One-Hot Encoding na coluna categórica sexo, utilizei o método describe() para observar as estatísticas resumidas da base e entender melhor a distribuição dos valores.
Em seguida, apliquei o MinMaxScaler para escalar os dados em um intervalo entre 0 e 1. Essa etapa é importante porque o KMeans é um algoritmo baseado em distância, então colunas com valores em escalas maiores podem acabar influenciando mais o agrupamento do que deveriam. Ao escalar os dados, todas as variáveis passam a contribuir de maneira mais equilibrada para o cálculo das distâncias.
Após o escalonamento, converti os dados novamente para um DataFrame pandas, preservando os nomes das colunas originais para facilitar a análise. Também salvei o scaler treinado com joblib, permitindo que a mesma transformação seja reutilizada futuramente em novos dados.
Com os dados escalados, executei novamente a função de avaliação para calcular a inércia e o Silhouette Score em diferentes quantidades de clusters, variando de 2 até 20. A partir dessa análise, utilizei o gráfico de silhueta e o método do cotovelo para apoiar a escolha da quantidade mais adequada de grupos.
Com base nos resultados observados, escolhi k = 3 como melhor configuração para o modelo. Por fim, treinei um novo modelo KMeans com 3 clusters utilizando os dados escalados e salvei o modelo treinado em arquivo, deixando o fluxo mais organizado e preparado para reutilização.
Essa etapa reforçou a importância do pré-processamento dos dados em problemas de aprendizado não supervisionado, principalmente quando utilizamos algoritmos sensíveis à escala das variáveis, como o KMeans.
Link do repositório:
https://github.com/Moquiuti/Clusteriza-o-Lidando-com-dados-sem-r-tulo/blob/main/atividade_otimizacao_clusterizacao.py