1
resposta

[Projeto] desvendando os agrupamentos

import pandas as pd
import joblib
from sklearn.preprocessing import OneHotEncoder, MinMaxScaler
from sklearn.cluster import KMeans

# 1. Carregar e preparar os dados
url = 'https://raw.githubusercontent.com/alura-cursos/Clusterizacao-dados-sem-rotulo/main/Dados/dados_mkt.csv'
df = pd.read_csv(url)

encoder = OneHotEncoder(categories=[['F','M','NE']], sparse_output=False)
sexo = encoder.fit_transform(df[['sexo']])
sexo_df = pd.DataFrame(sexo, columns=encoder.get_feature_names_out(['sexo']))
dados = pd.concat([df, sexo_df], axis=1).drop('sexo', axis=1)

# 2. Escalonar os dados
scaler = MinMaxScaler()
dados_escalados = scaler.fit_transform(dados)
dados_escalados = pd.DataFrame(dados_escalados, columns=dados.columns)

# 3. Treinar modelo KMeans com 3 clusters
modelo_kmeans = KMeans(n_clusters=3, random_state=45, n_init='auto')
modelo_kmeans.fit(dados_escalados)

# 4. Reverter escala para análise
dados_analise = pd.DataFrame()
dados_analise[dados_escalados.columns] = scaler.inverse_transform(dados_escalados)

# 5. Adicionar rótulos dos clusters
dados_analise['cluster'] = modelo_kmeans.labels_

# 6. Calcular médias por cluster
cluster_media = dados_analise.groupby('cluster').mean().transpose()
cluster_media.columns = [0, 1, 2]

print('Médias por cluster:')
print(cluster_media)

# 7. Ver atributos mais relevantes de cada grupo
print('\nCluster 0:')
print(cluster_media[0].sort_values(ascending=False).head(10))

print('\nCluster 1:')
print(cluster_media[1].sort_values(ascending=False).head(10))

print('\nCluster 2:')
print(cluster_media[2].sort_values(ascending=False).head(10))
1 resposta

Olá, Moacir! Como vai?

Parabéns pela resolução da atividade!

Observei que você explorou o uso do OneHotEncoder para transformar variáveis categóricas em representações numéricas com Python, utilizou muito bem o MinMaxScaler para normalizar os dados antes da clusterização e ainda compreendeu a importância do KMeans para identificar grupos e calcular médias por cluster, facilitando a análise dos atributos mais relevantes de cada grupo.

Continue postando as suas soluções, com certeza isso ajudará outros estudantes e tem grande relevância para o fórum.

Sugestão de conteúdo para você mergulhar ainda mais no tema:

Alguns materiais estão em inglês, mas é possível compreendê-los usando o recurso de tradução de páginas do próprio navegador.

Fico à disposição! E se precisar, conte sempre com o apoio do fórum.

Abraço e bons estudos!

AluraConte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!