Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Clusterização de dados: segmentação de clientes

Clusterização de dados: segmentação de clientes

Introdução ao problema - Introdução

Sejam muito bem-vindos ao curso de segmentação de clientes, uma experiência com marketing digital. A ideia desse curso é seguindo a mesma linha do curso de detecção de fraudes fazer uma análise completa de um projeto de data Science com machine learning, usando todo o popline de análise de dados.

Para isso, a gente vai trabalhar com o seguinte problema. A gente tem uma loja de e-commerce, um banco de dados que inclusive está na plataforma Kaggle, da Ulist, e basicamente a gente conecta compradores e vendedores.

A questão é que aposto que todo mundo já recebeu um e-mail de propaganda de alguma loja que você tenha feito alguma compra, só que te oferecendo um negócio que você não tem absolutamente nenhum interesse em comprar, e o que acontece? Você não se converte, você não compra, você não tem essa conversão de compra. Isso é um grande problema para as lojas de e-commerce, porque acaba que você gasta muito com marketing, mas ele é pouco feito.

A ideia desse projeto é justamente criar uma metodologia, ou usar metodologias de marketing para que a gente possa segmentar os nossos clientes. Então, para isso a gente vai utilizar clusterização.

Que tipo de dado a gente tem acesso? A gente vai ter, por exemplo, o CEP do cliente, o CEP do vendedor. Isso é interessante inclusive para que a gente faça uma análise também em termos de frete. É muito mais vantajoso que um cliente que mora lá no Amazonas, por exemplo, compre de um vendedor do Amazonas, porque o frete vai sair mais barato e a pessoa não desiste às vezes da compra única e exclusivamente pelo preço alto do frete. A gente tem a questão do valor, do tipo de compra que o cliente faz, o horário da compra.

E o que a gente pode fazer com esses dados? Como eu falei, esse curso vai ser voltado para a segmentação dos nossos clientes, então com base nas informações que a gente tem deles, a gente vai segmentá-los, criar grupos de clientes, para que a gente possa enviar marketing específico. Ou seja, e-mails com informações que esse cliente realmente está interessado.

E aí como a gente vai tratar esses dados? Usando um método não supervisionado de machine learning para a clusterização. Ou seja, clientes que compraram na loja e que de repente têm interesse em eletrônicos não deveriam receber anúncios de imóveis, e esse tipo de coisa.

E o código? Bom, como eu disse, a gente vai trabalhar com toda a popline de análise de dados, então a gente vai trabalhar com importação das bibliotecas, importação do banco de dados. Nesse caso nosso banco de dados já está bem limpo, então a gente não vai precisar trabalhar tanto assim com limpeza e com o que a gente chama de data handling.

Mas a gente vai criar funções específicas para fazer uma AED, uma análise exploratória de dados. Então, a gente vai ter análise em função do CEP, em função do método de compra que foi utilizado, e a gente vai trabalhar com um modelo RFN de marketing, que se baseia em três variáveis. A recência, a frequência e a monetaridade ou receita, na tradução livre.

Quanto o cliente gasta nessa empresa? Quantas compras ele faz? Há quantos dias foi a última compra desse cliente? Tudo isso vai se transformar em informação útil para que a gente possa clusterizar esses clientes, e aí você vai aprender como fazer isso. E não só, mas também definir o número de clusters corretos utilizando tanto a regra do cotovelo quanto uma regra matemática, e aí nós vamos clusterizar esses clientes e então definir uma pontuação para os clientes que compram mais ou gastam mais, que estão há menos tempo sem visitar a nossa loja.

A partir dessa clusterização, a partir da pontuação a gente consegue criar segmentos de clientes mais ativos, inativos, business, master, premium, e então fazer uma análise visual desses clientes para que a gente possa enviar para o pessoal de marketing e então eles saibam que tipo de cliente eles têm que focar, que cliente não compra há muito tempo, ou compra pouco.

É um projeto não muito avançado, então a princípio qualquer pessoa que tenha um conhecimento básico de data Science e Python pode acompanhar. Eu sugiro alguns cursos da Alura para que você veja antes, entre eles o data Science primeiros passos, introdução ao Python e Pandas, é muito importante que você já saiba um pouco de Python e de preferência de Pandas.

Data visualization parte 1, que é introdução ao design de gráficos, que a gente vai trabalhar um pouquinho com visualização, data visualization parte 2, escolhendo o melhor gráfico, data visualization, explorando com seaborn, porque a gente vai utilizar essa biblioteca também de visualização de dados, e machine learning, introdução a algorismos não supervisionados. A gente vai tratar teoricamente um pouco sobre esse algoritmo específico, mas se você tiver mais conhecimento sobre esses algoritmos melhor ainda.

Sejam muito bem-vindos a mais esse curso.

Introdução ao problema - Importando e Explorando o Banco de Dados

Bom, pessoal, nesse vídeo a gente vai começar importando as nossas bibliotecas que vão ser mais utilizadas. Para isso, vamos usar o Júpiter notebook com Python 3. As duas principais importações que a gente vai fazer, primeiro é o pandas. Import pandas spd, spd para que eu possa toda vez que eu quiser chamar uma função do pandas ao invés de escrever pandas. alguma coisa eu escreve pd. a função.

Também vou importar o numpy, que é a principal biblioteca matemática. Pandas e numpy são as principais bibliotecas com funções prontas para analisar banco de dados, array multidimensionais, implementar algumas técnicas úteis de comparação científica, computação estatística, enfim. Já facilita bastante.

Também vou importar o matplotlib splt, e não só essa biblioteca de visualização de dados vou importar, mas também vou importar o seaborn, que é uma outra biblioteca de visualização que também é bastante interessante.

Também vou importar o date time. O módulo date time fornece algumas classes para a gente modificar datas e horas de maneira mais simples. A gente vai ter maior facilidade em trabalhar com datas e horas.

Vamos vir em run. Funcionou direitinho. Agora vamos importar nosso banco de dados. Vou chamar de df, de data frame, é igual a pd, porque estou numa função do pandas, read csv, porque nosso arquivo é um arquivo de texto, banco de dados .csv.

Vamos vir em run. Como é uma string escrevo ele entre duas aspas. Agora, para a gente ter uma ideia melhor de quais são as variáveis que a gente vai trabalhar, vou usar a função info. Venho em df, função info, e aí abro e fecho parênteses.

Aqui ele está me dando todas as colunas que eu tenho, todas as variáveis, um número de valores não nulos que elas têm, e também o tipo de variável que estou trabalhando. Tenho números inteiros, objetos, floats, não tenho string, mas poderia ter.

A gente tem aqui primeiro amostra, que vai ser uma numeração crescente dos dados. Então, 12345, id do cliente, que é o número usado pelo cliente na compra. Único cliente, que vai ser o número único dado para cada cliente em função do ip dele, independente da compra. O item id, que é o número de identificação do item comprado. O CEP cliente, que é o CEP de moradia ou de entrega do cliente, cidade cliente, que vai ser a cidade de onde foi feito o pedido, Estado cliente, que vai ser o Estado de onde foi feito o pedido, id pedido, que é o número de identificação da compra.

Status pedido vai ser o status de entrega ou não do pedido. Horário pedido vai ser o horário e data em que o pedido foi feito. Pedido aprovado vai ser horário e data em que o entregador recebeu o pedido. Pedido entregue vai ser a data e horário em que o pedido foi entregue.

Data estimada vai ser o horário e a data estimada de entrega, id vendedor vai ser o número de identificação do vendedor. Preço é o preço do produto, frete é o preço do frete. Pagamento sequencial vai ser caso o cliente faça uma compra utilizando mais de um método de pagamento ele aciona um pagamento sequencial, que vai ser criado para acomodar todas as ordens de pagamento.

O pagamento tipo vai ser o método de pagamento, se foi boleto, cartão de crédito, cartão de débito. Pagamento prestações vai ser o número de prestações escolhido pelo cliente. Pagamento valor vai ser o valor pago. Review vai ser a review de todo o processo. Tem que ter uma nota que o consumidor vai dar.

Categoria é a categoria do item comprado, categoria inglês é o nome da categoria em inglês. CEP vendedor vai ser obviamente o CEP do vendedor. Cidade vendedor vai ser a cidade do vendedor, e Estado vendedor o Estado do vendedor.

Por fim, vou usar o comando head. Então, df.head, para a gente dar uma olhadinha aqui em run, visual. Meu banco de dados. Ele me mostra as cinco primeiras amostras e tenho uma ideia mais ou menos de como que as minhas variáveis estão alocadas. Percebe que o formato de data e hora vem sempre juntos, é um pouco difícil de manipular, e é exatamente por isso que a gente importou o date time.

No próximo vídeo a gente já vai falar um pouco sobre exploração de dados.

Introdução ao problema - Análise Exploratória dos Dados

Para a gente conseguir entender como os nossos clientes se comportam, vou fazer algumas análises preliminares exploratórias, que vão ser importantes para levantar hipóteses.

Primeiro a gente vai criar uma função, já uso o df para definir essa função, que vai nos permitir observar em um gráfico de barras algumas das variáveis que a gente quer trabalhar. Por exemplo, os Estados dos compradores com seu valor percentual. Vou chamar ela de plot perc, porque vou analisar o valor percentual.

Ela vai ter dois inputs, o primeiro vai ser st, que vai ser a variável que estou trabalhando, nesse caso os Estados, e dados, que vai ser o banco de dados de onde vou tirar essa informação.

A primeira coisa que vou fazer é definir o tamanho dessa figura para não ficar aquela imagem muito pequenininha. Vou chamar essa imagem de g, porque toda função que eu quiser aplicar a essa imagem vai ficar mais fácil. Vou usar o sns.countplot. Sns foi como chamei a biblioteca seaborn. Esse é o gráfico de barras da seaborn.

No x vou ter st, que é a variável que a gente quer trabalhar. Nesse caso podem ser os Estados. Em data vou colocar os dados. Tudo isso são os inputs da minha variável, e em oriente quero que seja horizontal.

A gente poderia definir título, labels, o nome dos eixos, mas eu acho que isso acaba sendo um pouco negativo nesse sentido porque a gente não poderia usar para outras coisas. Então, o que eu vou fazer aqui é definir o nome apenas do eixo y, porque no eixo y vai ser só a contagem, independe da minha variável. E aí vou colocar font size 17.

Agora vou criar um vetor chamado sizes, porque vou querer escrever em cima de cada uma das barras qual é o valor percentual, então para isso vou ter que pegar o tamanho dessas barras. Vou fazer um looping, chamar p. P vai ser a variável que define cada uma das barras, gpatches, então estou pegando as informações que eu preciso do próprio countplot.

A primeira coisa que vou pegar é a altura, então hight get high, estou pegando a altura de cada uma das barras, e aí vou colocar nesse meu vetor, então append sizes. Aí boto aqui height.

Agora vou usar a função text, porque quero escrever. O primeiro input da minha função text é a posição em x. Então vou pegar a posição em cada uma das minhas barras em x, vou somar com a espessura da barra, dividido por 1,6. Esse valor eu já testei, é um valor que fica legal. Depois vocês podem brincar de mudar de 1,6 para 1,5, 1,4 e ver como isso muda a posição do texto.

O próximo é a posição em y, que vai ser altura mais 200 pixels. Também podem mudar esses 200. Eu já testei e vi que é um valor que fica visualmente legal. Agora, o que a gente vai escrever?

Vou escrever um float com duas casas decimais e o sinal de percentual. Format. E aí vou escrever o valor percentual, que vai ser a altura dividido pelo número total de dados vezes 100. O próximo input que vou ter vai ser como vou centralizar em termos de alinhamento horizontal. Vai ser central, então center. E o VA, que é o alinhamento vertical, vai ser bottom, ou seja, embaixo. E também vou colocar um font size de 12 para não ficar muito pequeno.

A última informação que vou colocar vai ser o tamanho do limite do eixo y, porque eu não quero que a maior barra, por exemplo, fique muito colada à borda da imagem, então ele vai vir de 0 até max, ou seja, o valor máximo que tenho de barra, vezes 1,1.

Vamos vir em run. À princípio rodou legal. Agora vamos se a gente consegue plotar. Vou chamar minha função plot perc e a variável vai ser Estado cliente com banco de dados df.

Vamos vir em run. Faltou colocar um igual no fix size. Run novamente. Temos contagem, tenho os meus Estados, como não defini um nome para o eixo y ele vai colocar o nome da própria variável, e tenho valores percentuais de cada um dos Estados. Um gráfico bastante bonitinho.

A gente já conseguiu ver exatamente qual o Estado que claramente tem mais compradores, São Paulo, tem bem mais compradores. E agora a gente pode ver se isso também se repete por causa dos vendedores. Então, deplot texto, vou usar essa mesma função, Estado, vendedor df, run.

Olha que interessante. No caso dos compradores, apesar da gente ter um número bem expressivo de compradores em São Paulo, a gente tem muita gente no Rio de Janeiro, Minas Gerais, Paraná, Rio Grande do Sul tem uma certa quantidade também.

No caso dos vendedores, a diferença é muito maior, então tenho mais de 70% dos meus vendedores em São Paulo. Isso é interessante, porque de repente a gente pode fazer algum esquema de frete, ou incentivar vendedores de outras localidades, que aí obviamente a gente acaba melhorando também os compradores. A pessoa está em Manaus, ela vai ter que comprar de um vendedor que está em São Paulo. Imagine o preço do frete disso, se de repente a gente tivesse um vendedor em Manaus também, essa pessoa poderia comprar mais.

E aí a gente pode fazer a mesma análise para qual o método de pagamento mais utilizado. Então, vou vir aqui e vou usar meu plot texto, a função que a gente criou, e vou usar a variável pagamento tipo e df que é o banco de dados onde ela está.

A gente percebe que a gente tem um valor bem maior de uso de cartão de crédito, depois a gente tem um valor razoável de boleto, voucher e cartão de débito quase ninguém.

É interessante que a gente pode aumentar as promoções para pagamento à vista, para que a gente possa aumentar a quantidade de pagamentos com boleto ou cartão de crédito e que acaba aumentando inclusive a segurança, porque quando você tem o pagamento em boleto, os casos de fraude por cartão de crédito diminuem bastante. Isso é algo que a gente pode enviar para o nosso chefe.

Sobre o curso Clusterização de dados: segmentação de clientes

O curso Clusterização de dados: segmentação de clientes possui 118 minutos de vídeos, em um total de 38 atividades. Gostou? Conheça nossos outros cursos de Machine Learning em Data Science, ou leia nossos artigos de Data Science.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Machine Learning acessando integralmente esse e outros cursos, comece hoje!

Plus

De
R$ 1.800
12X
R$109
à vista R$1.308
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

Matricule-se

Pro

De
R$ 2.400
12X
R$149
à vista R$1.788
  • Acesso a TODOS os cursos da Alura

    Mais de 1500 cursos completamente atualizados, com novos lançamentos todas as semanas, emProgramação, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.

  • Alura Challenges

    Desafios temáticos para você turbinar seu portfólio. Você aprende na prática, com exercícios e projetos que simulam o dia a dia profissional.

  • Alura Cases

    Webséries exclusivas com discussões avançadas sobre arquitetura de sistemas com profissionais de grandes corporações e startups.

  • Certificado

    Emitimos certificados para atestar que você finalizou nossos cursos e formações.

  • Luri powered by ChatGPT

    Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com Luri até 100 mensagens por semana.

  • Alura Língua (incluindo curso Inglês para Devs)

    Estude a língua inglesa com um curso 100% focado em tecnologia e expanda seus horizontes profissionais.

Matricule-se
Conheça os Planos para Empresas

Acesso completo
durante 1 ano

Estude 24h/dia
onde e quando quiser

Novos cursos
todas as semanas