Skip to content

Projeto de ensino para o curso Ciência de Dados ministrado por mim na Hashtag

Notifications You must be signed in to change notification settings

chicolucio/segmentacao-clientes-supermercado

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

author

Segmentação de clientes de um supermercado

Um supermercado, através de cartões de fidelidade, possui alguns dados básicos sobre seus clientes, como idade, gênero, renda anual e pontuação de gastos. Tal pontuação é algo que o supermercado atribui ao cliente com base em parâmetros definidos, como comportamento do cliente e dados de compra. O supermercado deseja entender melhor seus clientes, de modo a formular estratégias de negócios, e para isso contratou um cientista de dados para realizar uma segmentação dos clientes.

segmentacao_pca_3d

Link original para o dataset

Projeto de ensino utilizado em curso de Ciência de Dados ministrado por mim para a Hashtag Treinamentos.

Objetivos

O objetivo deste projeto é mostrar aos alunos como segmentar os clientes com base em seus dados de compra. Em um cenário real, tal segmentação poderia ser utilizada pelo supermercado possa entender melhor os clientes e formular estratégias de negócios de acordo.

Durante o curso, mostrei a importância de realizar o pré-processamento dos dados, bem como a importância de se realizar a análise exploratória dos dados. Além disso, mostrei como utilizar o algoritmo K-Means para realizar a segmentação dos clientes.

Objetivos detalhados:

  • Comparar os resultados da clusterização sem e com pré-processamento dos dados, mostrando a importância de se realizar o pré-processsamento dos dados.
  • Apresentar uma estrutura de projeto de Ciência de Dados, com a utilização de notebooks, scripts, relatórios e repositório no GitHub.
  • Apresentar boas práticas de programação em Python, como a utilização de funções e arquivos de script para facilitar o reaproveitamento de código.
  • Mostrar boas práticas de uso do SciKit-Learn, como a utilização de pipelines.

Estrutura do repositório

O repositório está estruturado da seguinte forma:

├── dados
├── imagens
├── modelos
├── notebooks
├── reports
  • Na pasta dados estão os dados utilizados no projeto. O arquivo Mall_Customers.csv é o dataset utilizado originalmente. Os demais arquivos são os datasets gerados durante o projeto.
  • Na pasta imagens estão as imagens utilizadas neste README.
  • Na pasta modelos estão os modelos gerados durante o projeto.
  • Na pasta notebooks estão os notebooks com o desenvolvimento do projeto. Em detalhes, temos:
    • projeto_supermercado_01_eda.ipynb: notebook com a análise exploratória dos dados usando ydata-profiling e Seaborn.
    • projeto_supermercado_02_clusterizacao.ipynb: notebook com a clusterização dos dados usando K-Means sem pré-processamento apenas por questões didáticas.
    • projeto_supermercado_03_clusterizacao_visualizacao.ipynb: notebook com função para visualização em 3D dos clusters gerados pelo K-Means (sem pré-processamento por questões didáticas).
    • projeto_supermercado_04_pipeline.ipynb: notebook com a clusterização dos dados usando K-Means com pré-processamento utilizando pipelines do Scikit-Learn.
    • projeto_supermercado_05_pipeline_pca.ipynb: notebook com a clusterização dos dados usando K-Means após redução de dimensionalidade com PCA utilizando pipelines do Scikit-Learn.
    • funcoes_auxiliares.py: arquivo com funções auxiliares utilizadas nos notebooks.
  • Na pasta reports estão os relatórios gerados durante o projeto utilizando a biblioteca ydata-profiling.

Detalhes do dataset utilizado e resumo dos resultados

O dataset utilizado é o contido no arquivo Mall_Customers.csv, que contém os seguintes dados:

  • CustomerID: ID do cliente
  • Gender: sexo do cliente
  • Age: idade do cliente
  • Annual Income (k$): renda anual do cliente
  • Spending Score (1-100): pontuação de gastos do cliente

Com o pipeline realizando pré-processamento, PCA e K-Means, a base foi segmentada em 5 clusters, como mostrado nas figuras abaixo:

pairplot

boxplot

  • Cluster 0 - pontuação de gastos moderada, renda moderada, idade alta
  • Cluster 1 - pontuação de gastos moderada, renda moderada, idade jovem
  • Cluster 2 - pontuação de gastos baixa, renda alta, idade moderada
  • Cluster 3 - pontuação de gastos alta, renda baixa, idade jovem
  • Cluster 4 - pontuação de gastos alta, renda alta, idade jovem

Transformando os pontos acima em uma tabela:

Pontuação de Gastos Renda Idade Cluster
Moderada Moderada Alta 0
Moderada Moderada Jovem 1
Baixa Alta Moderada 2
Alta Baixa Jovem 3
Alta Alta Jovem 4

Como reproduzir o projeto

O projeto foi desenvolvido utilizando o Python 3.11.4. Para reproduzir o projeto, crie um ambiente virtual com o Conda, ou ferramenta similar, com o Python 3.11.4 e instale as bibliotecas abaixo:

Biblioteca Versão
Matplotlib 3.7.1
NumPy 1.24.3
Pandas 1.5.3
Scikit-Learn 1.3.0
Seaborn 0.12.2

Essas são as bibliotecas principais utilizadas no projeto. O relatório foi gerado com a biblioteca ydata-profiling, instale-a se quiser reproduzir o relatório. Para ter um gráfico em 3 dimensões interativo, instale a biblioteca ipympl.

About

Projeto de ensino para o curso Ciência de Dados ministrado por mim na Hashtag

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published