16 de Novembro de 2023.
Por Alex Barros.
@aprendadatasciece / @ealexbarros

Clusterização em Python: Produtos de um supermercado com apenas duas features

Exemplo utilizando Python para agrupar produtos considerando apenas duas features 

No cenário dinâmico do varejo, a capacidade de compreender e responder eficientemente aos padrões de compra dos clientes é crucial para o sucesso de um supermercado. A clusterização emerge como uma ferramenta poderosa nesse contexto, permitindo a segmentação inteligente de clientes com base em seus comportamentos de compra.

Neste artigo, exploraremos a aplicação prática da clusterização de vendas em supermercados, utilizando a linguagem de programação Python.

A escolha do Python não é apenas uma preferência popular na comunidade de ciência de dados, mas também uma opção robusta e versátil para análise de dados. Demonstraremos como utilizar a biblioteca scikit-learn para aplicar o algoritmo K-Means, uma técnica comum de clusterização, e apresentaremos um exemplo envolvendo duas características para ilustrar o processo.


Dados dos Produtos

Criamos um dataset fictício com alguns produtos que são vendidos em supermercados. As features que utilizaremos serão Preço e Quantidade. Agrupando produtos por essas features conseguimos realizar uma gestão de estoque mais eficiente.

Fig 1: Dados do arquivo csv vendas_dados 

Nesse exemplo serão utilizadas as bibliotecas pandas, sklearn e para plotar os clusters vamos utilizar a matplotlib. 

Fig 2: Bibliotecas que serão utilizadas 

Carregando o dataset e features

Para carregar o nosso dataset usamos a função read_csv do pandas para a variável vendas . Depois filtramos somente as features desejadas, ‘preco’ e ‘quantidade’.


Fig 3: Carregar dados e filtrar features 

Agrupando os produtos

Para agrupar os produtos vamos utilizar a função KMeans com 3 clusters.

A função KMeans do pacote scikit-learn em Python é uma implementação do algoritmo de agrupamento K-Means. O K-Means é um algoritmo popular de clusterização que divide um conjunto de dados em k grupos (clusters) com base nas características dos dados.

Fig 4: Aplicação do fit_predict 

Na Figura 4 a função fit_predict da classe KMeans no pacote scikit-learn combina duas etapas principais do processo de clusterização: ela treina o modelo com os dados de entrada e retorna os rótulos dos clusters atribuídos a cada ponto de dados no conjunto de treinamento. Isso é útil quando você está interessado apenas nos rótulos dos clusters e não precisa dos centróides ou outras informações após o treinamento.

Com a execução da célula da Fig 4 criamos uma nova coluna no nosso dataframe vendas, indicando a qual cluster aquele produto pertence.

Novo dataframe na Figura 5: 

Fig 5: Arquivo com coluna de cluster 

Plotar os Clusters

Para plotar os cluster, utilizaremos um gráfico de dispersão, o Scatter Plot.
O código abaixo constrói a imagem do plot que desejamos.

Fig 6: Scatter plot dos clusters por cor. 

Uma outra maneira de visualizar a mesma informação é utilizando o laço for abaixo. Onde mostramos na tela cada item do dataframe que está em um determinado cluster: 

Fig 7: Print dos clusters. 

Para melhorar a visualização do gráfico, sugiro incluir a legenda dos itens. Quando temos gráficos com muitos itens a leitura dos dados pode ficar muito poluída, mas como o nosso caso é de poucos itens, a legenda ajuda a identificar cada um dos clusters. 

Fig 8: Visualização de Dados com legenda 

Utilizando as duas variáveis preço e quantidade de vendas conseguimos ter três clusters de produtos

Isso pode ajudar o supermercado a entender melhor seu mix de produtos e ajustar suas estratégias de precificação e estoque de acordo com os diferentes grupos de produtos.

Utilize outros datasets com mais features ou com números diferentes de clusters e pratique um pouco de Python.

Para mais conteúdo acesse no instagram @aprendatadascience