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