Semana da Programação

16% de desconto!
Oferta acaba em:

0

dias

00

hrs

00

min

00

seg

Primeiras aulas do curso Clustering Básico: k-means, DBSCAN e mean shift

Clustering Básico: k-means, DBSCAN e mean shift

Análise exploratória - Introdução

Bem-vindo ao nosso curso de Clustering básico. O objetivo desse curso é entender o que é clusterização, ou seja, nós vamos entender o que significa agrupar/clusterizar na prática.

Para isso, nós vamos começar uma análise exploratória dos nossos dados, ou seja, vendo como os nossos atributos se relacionam. Para fazermos isso, nós vamos utilizar uma biblioteca chamada Biokit para gerarmos os gráficos bonitões, como esse de correlação.

Depois disso nós vamos conhecer então os métodos de clusterização que nós iremos utilizar. Para não termos que implementar esses métodos na unha, nós vamos utilizar a biblioteca do scikit-learn, na parte específica de clustering, ou seja, de agrupamento.

Os métodos que vamos utilizar são: o K-Means, Mean-shift e além deles, o DBSCAN. Três métodos bastante utilizados para agrupar. Para nós testarmos esses métodos, nós iremos utilizar uma base de dados de vinho, ou seja, nós iremos agrupar os vinhos.

Então nós vamos pegar essa base de dado, fazer uma análise laboratório em cima dela para ver como os atributos se comportam, depois disso, nós vamos aplicar os algoritmos de clusterização. Então, nós iremos avaliar a clusterização, utilizando o método chamado coeficiente de silhueta.

Para você fazer esse curso, o que você precisa? Conhecer um pouco de Python e conhecer um pouco de Pandas. Para nós visualizarmos a nossa clusterização, vamos utilizar aqui essa biblioteca chamada Plotly, para gerarmos os gráficos 3D bonitões, como esse.

No final, nós vamos conseguir gerar os gráficos dos nossos clusters, ou seja, de como o nosso agrupamento foi realizado. No final desse curso, então você vai ser capaz de fazer uma análise exploratória, gerar um gráfico de correlação, agrupar os dados utilizando o DBSCAN, o Mean-hift e o K-Means, que são os métodos mais utilizados de clusterização.

Nós vamos aprender a avaliar o resultado dessa clusterização, utilizando o coeficiente de silhueta, e a fazer os gráficos bonitões, como esse do Plotly. Além disso, você vai ganhar em “insight” para utilizar qualquer outra técnica de clusterização, porque você vai aprender como clusterização funciona na prática.

Análise exploratória - Importando e analisando os dados

Para fazer download do arquivo inicial deste treinamento, acesse este link e clique com o botão direito em salvar como e salve-o na pasta de seu projeto.

Olá, galera. Tudo bem? Imagine que você está trabalhando como cientista de dados em uma dessas empresas grandes de logística. Nesse caso, seu trabalho é basicamente o quê? Organizar dados!

Seu chefe então te mandou um conjunto de vinhos e pediu para que você os organizasse. Qual seria o seu primeiro passo a fazer? O primeiro passo é utilizarmos algumas bibliotecas para nós visualizarmos esses dados de uma maneira melhor. Para isso, nós vamos utilizar como biblioteca gráfica o Plotly.

Para nós conseguirmos inserir o Plotly, primeiro vamos precisar instalá-lo. Nós vamos clicar em “insert” e “Code cell”. Nós vamos utilizar para instalar, um sistema de gerenciamento de pacotes chamado “pip”, então “pip install plotly==” e a versão que nós desejamos instalar, “4.1.0”. Depois disso, nós vamos clicar em “Run cell”.

Isso pode demorar um pouquinho para instalar, mas isso é normal. Ele vai basicamente buscar todos os pacotes que existem necessários no seu computador e ver os pacotes que você precisa instalar para conseguir rodar o Plotly. Depois disso, nós vamos inserir uma nova célula, “Insert”, “Code cell” e vamos importar as demais bibliotecas.

Para nós importarmos o Plotly, não vamos utilizar a biblioteca inteira, nós vamos utilizar uma parte dela chamada “graph objects”. Então, nós vamos fazer o quê? “import plotly.graph_objects_as_go”. Esse “as go”, nós estamos utilizando como se fosse uma forma de apelidar a biblioteca. Sempre que nós utilizarmos o Plotly, essa parte de biblioteca, nós vamos utilizar através do “go”.

Nós vamos fazer o mesmo para uma biblioteca chamada Pandas. O Pandas é uma biblioteca muito ótima para trabalhar com dados estruturados em estruturas que nós chamamos de DataFrames. Os DataFrames são muito semelhantes a tabelas desses programas de tabelas tradicionais, como o Excel ou até mesmo Google Sheets.

Depois, nós vamos importar o NumPy, o NumPy é uma biblioteca matemática muito boa para trabalhar com matrizes e com dados. Depois que nós colocamos “import” em todas elas, nós vamos chamar o Pandas de “pd” e o NumPy de “np”, o apelido das bibliotecas.

Nós vamos apertar as teclas "Ctrl + Enter", que também é outra forma de dar “run” na “cell”, além de clicar aqui no ícone do lado chamado “Run cell”. Vamos inserir mais uma célula de código e vamos agora importar os nossos dados.

Para importarmos os nossos dados, a primeira coisa que nós temos que definir é o caminho do nosso arquivo. No meu caso aqui, o arquivo está no Drive então estou na pasta “contente/gdrive/My Drive”. Estou na minha pasta do meu “Colab Notebooks” e vou importar aqui o arquivo “Wine.csv”, que é o arquivo que o seu chefe mandou para você.

Depois disso, nós vamos rodar um método do Pandas, chamado “read.csv”. Esse método chamado “read.csv” serve para você ler basicamente um arquivo do tipo CSV, que é “Comma-separated values”.

Para esse método, nós passamos como entrada o caminho do arquivo, que é o que nós acabamos de digitar. Vamos lá! Vamos rodar essa célula com mais uma vez com as teclas "Ctrl + Enter", que é uma maneira mais rápida de rodar.

Uma vez que nós importamos essa célula, nós podemos utilizar um método muito legal para vermos qual a característica física do nossos dados. Como assim? Quantas linhas e quantas colunas.

Para nós fazermos isso, vamos utilizar o “print (“O dado possui, df.shape)”, “shape” retorna para nós, basicamente, a forma do nosso DataFrame. “shape [0]”, o número de linhas, e “shape [1]”, o número de colunas, “shape [1], atributos”.

Normalmente os nossos dados são organizados da seguinte maneira: nas colunas nós temos os atributos e nas linhas nós temos as amostras.

Depois que nós fizermos isso, também vamos utilizar um método chamado “df.head”, que mostra as cinco primeiras amostras do nosso DataFrame.

Como nós podemos ver aqui, o nosso dado possui 178 amostras e 14 atributos. Quando nós utilizamos esse método “head”, ele nos mostra uma visão bem bonita de tabela do nosso DataFrame. Nós podemos perceber que temos várias colunas aqui, com vários atributos, “Alcohol”, “Malic_Acid”, “Ash_Alcalinity”, e assim por diante.

Além disso, nós conseguimos ver as nossas cinco primeiras amostras. Se eu quisesse ver as dez primeiras amostras, eu poderia colocar “df.head” e passar para esse método como entrada, como argumento o valor “10”. Com isso eu veria as dez primeiras amostras. Vamos voltar aqui para as cinco primeiras, apertar as teclas "Ctrl + Enter" de novo e inserir uma nova célula.

Como nós podemos perceber os títulos dos nossos dados ou dos nossos atributos estão em inglês, seria bem interessante passarmos eles para o português. Por que seria interessante nós passarmos eles para o português? Seria interessante passar eles para português porque pode ser que outras pessoas acabem a vir trabalhando com esses dados.

Para fazer isso, nós vamos utilizar um método dos DataFrames, também chamado de df.rename,” df =”, ou seja, o DataFrame novo é igual o nosso DataFrame antigo “.rename”. “rename” significa que nós estamos renomeando e nós vamos passar para ele como entrada uma estrutura conhecida como dicionário.

Essa estrutura de dicionário, basicamente relaciona uma chave com um valor. Basicamente, ela vai procurar nas nossas colunas onde está “Alcohol” e substituir por “Alcool”. Nós podemos continuar traduzindo alguns demais atributos, como “Ash” por “po”, não vamos utilizar acento aqui porque depois fica mais fácil para fazermos as buscas dos dados. Eu vou mostrar para vocês, porque depois nós vamos trocar “Ash_Alcalinity” por “Alcalinidade_po”.

É interessante que sempre que nós estivermos digitando um código, é sempre bom deixarmos ele mais bem organizado e para fazer isso nós podemos quebrar dentro dos parênteses. Basicamente, é só nós apertarmos a tecla "Enter", que sempre que nós estivermos dentro dos parênteses nós conseguimos executar essa função dividida em linhas.

Então, “Magnezium” nós vamos substituir por “Magnesio”, e o último que nós vamos mexer aqui é intensidade de cor, “Color_Intensity”, nós vamos traduzir para “Intensidade_de_cor”.

É interessante nós notarmos que nem todos os atributos convém nós traduzirmos porque alguns deles nem tem muito sentido no português, por exemplo, “Flavonoides”, em inglês “Flavonoids” não muda muita coisa, a não ser que a pessoa que estivesse trabalhando com isso fosse uma pessoa que dominasse bem a química, muitas vezes não é o caso.

Vamos usar as teclas "Ctrl + Enter" aqui para nós rodarmos a célula e agora vamos utilizar mais uma vez o atributo “head”, para vermos como ficou o nosso DataFrame com as colunas traduzidas.

“Alcohol” foi traduzido. Outra coisa que nós temos que ver se foi traduzido é o “Ash”. Foi traduzido para “po”, mas nós vemos que “Ash_Alcalinity” não foi traduzido. Por quê? Porque aqui em cima nós erramos o nome da coluna, nós podemos simplesmente copiar aqui e colar.

É bem interessante, sempre depois que nós fizermos esse tipo de modificação, nós sempre checarmos. Nós trocamos, rodamos mais uma vez com as teclas "Ctrl + Enter" e viemos mais uma vez aqui para verificarmos as cinco primeiras amostras novamente. Agora nós vemos que ficou trocado, “Alcalinidade_po”.

Uma coisa interessante para nós notarmos aqui é que nós fizemos a importação do arquivo do tipo CSV, mas como que é esse arquivo do tipo CSV? Esse arquivo do tipo CSV é chamado de “Comma-separated values”, ou seja, valores separados por vírgula.

Como nós podemos perceber aqui no topo do CSV, nós temos os nomes dos nossos atributos. Depois disso, nós temos todos os valores separados por vírgula e toda vez que nós temos uma quebra de linha, nós temos basicamente uma tecla “Enter”.

É uma forma bem comum de distribuir dados, a maioria dos dados do Kagel e dessas competições em Deep Learning, desses sites de competição em Deep Learning e aprendizado de máquina; sempre costumam fornecer o dado em CSV porque é uma forma leve e fácil de armazenar.

Até a próxima!

Análise exploratória - Analisando os Dados

Olá, galera. Tudo bem? Agora que nós já importamos os nossos dados, nós vamos fazer uma análise preliminar deles, para podermos mostrar para o nosso chefe.

Para nós fazermos isso, iremos utilizar um método do Pandas DataFrame, chamado “describe”, que é “descrever”. Nós vamos colocar “df”, que é o nome do nosso DataFrame, “.describe”.

Nós vamos apertar as teclas “Ctrl + Enter” ou “Shift + Enter”, tanto faz, a diferença das teclas “Ctrl + Enter” é que elas não criam uma célula, elas só rodam a célula atual; e as teclas “Shift + Enter” rodam a célula atual que você está e criam uma outra célula.

Esse método que nós acabamos de utilizar apresenta várias informações e estatísticas importantes para a nossa análise, elas são bem básicas mas dão bastante “insights” ou bastante ideias a respeito dos nossos dados.

A primeira coisa que nós podemos ver aqui é o “count”, que é o número de ocorrências. Nós vemos aqui que o nosso “Alcohol” tem 178 ocorrências, ou seja, ele tem 178 elementos, que é o número dos nossos dados. O mesmo acontece para todos os demais atributos.

Nós temos aqui também a média, essa média é a média aritmética simples. Através dela nós conseguimos ver como que os nossos dados estão variando. Por exemplo: nós vemos aqui que o “Proline”, a média dele é 746. Nós podemos ver que a média varia bastante ao longo de todo nosso DataFrame e de todos os nossos atributos.

Isso é interessante porque mostra que depois os nossos dados vão ter que passar por algum processo de adequação, uma vez que o valor deles é bem diferente. Eles variam de uma maneira bem diferente, a faixa de variação é diferente.

Nós podemos ver aqui outra coisa, que é o desvio padrão, é “std” de “standard deviation”. Basicamente, o desvio padrão mede o quanto os nossos dados estão dispersos em relação a média. Nós podemos perceber aqui que tem alguns que variam mais em relação à média e outros que variam menos.

Outra coisa que nós temos aqui e que é bem interessante é o valor mínimo e o valor máximo, que basicamente dá a faixa de variação dos nossos dados. Nós podemos perceber que a faixa é bem diferente.

Por exemplo: o “Alcool” varia de 11.03, que é o valor mínimo, até 14.83, que é o valor máximo. Enquanto isso, o “Proline”, por exemplo, varia de 278 a 1680, que é bem diferente. Por isso os dados vão ter que passar por um processo de adequação.

O segundo ponto que nós podemos perceber aqui é 25%, 50% e 75%. O que é isso? Isso são os chamados quantis. O que os quantis representam? O quantil 25% representa que 25% dos nossos dados têm o valor menor do que o mostrado aqui, menor que 12.36.

Nós podemos perceber que 25% dos nossos dados têm valor menor do que 12.36 para o “Alcool”, 1.60 para o “Acido_ Malico” e 2.21 para o “Po”. Isso aqui já nos traz algumas informações muito interessantes.

Por exemplo: se nós viermos aqui em “Flavanoids” e “Total_Fenois”, nós percebemos que o valor do quantil é bem semelhante, ao do quantil 25, 1.74 e 1.20. A mesma coisa acontece para o quantil 50%. O quantil 50% também é chamado de mediana, significa que metade dos nossos valores estão abaixo desse valor, metade dos nossos dados estão abaixo desse valor para esse atributo e a outra metade está acima.

Nós podemos perceber que os dois também têm um valor bem parecido, o que de certa forma pode indicar uma correlação, o que talvez faça sentido, pensando que flavonoide é um tipo de fenol.

Por fim, nós temos o quantil 75%. Esse quantil 75% nos indica, assim como os outros, que 75% dos nossos dados estão abaixo desse valor.

Uma coisa interessante é que só por essa análise básica nós já conseguimos perceber que tem uma relação bem forte em “Flavanoids” e “Total_Fenois”. Isso pode ser um indicativo para nós que talvez nós não precisemos dos dois na hora de fazermos os nossos agrupamentos.

Sobre o curso Clustering Básico: k-means, DBSCAN e mean shift

O curso Clustering Básico: k-means, DBSCAN e mean shift possui 110 minutos de vídeos, em um total de 47 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!

  • 1304 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

  • Desconto 16%

Premium

Desconto 16%
  • 1304 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$75 R$63
à vista R$900 R$756
Matricule-se

Premium Plus

Desconto 16%
  • 1304 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$100 R$84
à vista R$1.200 R$1.008
Matricule-se

Max

Desconto 16%
  • 1304 cursos

    Cursos de programação, UX, agilidade, data science, transformação digital, mobile, front-end, marketing e infra.

  • Certificado de participação

    Certificado de que assistiu o curso e finalizou as atividades

  • App para Android e iPhone/iPad

    Estude até mesmo offline através das nossas apps Android e iOS em smartphones e tablets

  • Acesso à Alura Start

    Cursos de introdução a tecnologia através de games, apps e ciência

  • Acesso à Alura Língua

    Reforço online de inglês e espanhol para aprimorar seu conhecimento

12X
R$120 R$100,80
à vista R$1.440 R$1.209,60
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