1
resposta

[Projeto] lidando com dados sem rótulo

Prova prática: lidando com dados sem rótulo
Objetivo

Construir um modelo de clusterização para agrupar consumidores

  1. Importação das bibliotecas
    import pandas as pd
    import numpy as np
    import matplotlib.pyplot as plt
    import seaborn as sns
    import joblib

detalhe: bibliotecas usadas
manipular dados ( pandas, numpy);
visualizar informações ( matplotlib, seaborn);
salvar objetos técnicos ( joblib).

  1. Carregamento dos dados

url = 'https://raw.githubusercontent.com/alura-cursos/Clusterizacao-dados-sem-rotulo/main/Dados/dados_mkt.csv'
df = pd.read_csv(url)
print(df.head())

os dados são carregados em um DataFrame.

  1. Exploração

print(df.info())
print(df['sexo'].unique())

analisamos:

tipos das colunas;
existência de valores categóricos;
interesse geral do conjunto

  1. Aplicação do One-Hot Encoding

from sklearn.preprocessing import OneHotEncoder

encoder = OneHotEncoder(categories=[['F', 'M', 'NE']], sparse_output=False)
encoded_sexo = encoder.fit_transform(df[['sexo']])

encoded_df = pd.DataFrame(encoded_sexo, columns=encoder.get_feature_names_out(['sexo']))
dados = pd.concat([df, encoded_df], axis=1).drop('sexo', axis=1)

print(dados.head())

  1. Salvando o encoder

joblib.dump(encoder, 'encoder.pkl')

  1. Treinamento do modelo KMeans

from sklearn.cluster import KMeans

mod_kmeans = KMeans(n_clusters=2, random_state=45)
modelo = mod_kmeans.fit(dados)

etapa:

n_clusters=2definir dois grupos;
random_state=45garante reprodutibilidade.

  1. Visualização dos clusters

dados['cluster'] = modelo.labels_
print(dados.head())

codigo fonte completo
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import joblib
from sklearn.preprocessing import OneHotEncoder
from sklearn.cluster import KMeans

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

print(df.info())
print(df['sexo'].unique())

encoder = OneHotEncoder(categories=[['F', 'M', 'NE']], sparse_output=False)
encoded_sexo = encoder.fit_transform(df[['sexo']])
encoded_df = pd.DataFrame(encoded_sexo, columns=encoder.get_feature_names_out(['sexo']))

dados = pd.concat([df, encoded_df], axis=1).drop('sexo', axis=1)

joblib.dump(encoder, 'encoder.pkl')

mod_kmeans = KMeans(n_clusters=2, random_state=45)
modelo = mod_kmeans.fit(dados)

dados['cluster'] = modelo.labels_
print(dados.head())

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 KMeans para realizar a clusterização de consumidores e ainda compreendeu a importância do joblib para salvar artefatos técnicos e garantir reprodutibilidade.

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!