Entre para a LISTA VIP da Black Friday

00

DIAS

00

HORAS

00

MIN

00

SEG

Clique para saber mais
Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Classificação: aprendendo a classificar dados com Machine Learning

Classificação: aprendendo a classificar dados com Machine Learning

Análise exploratória - Apresentação

Olá! Te desejo boas-vindas ao curso de Classificação: aprendendo a classificar dados com Machine Learning! Meu nome é João Miranda e serei seu instrutor nesta jornada.

Audiodescrição: João se descreve como um homem branco, com cabelos escuros e grandes amarrados em um coque, com as laterais raspadas. Possui sobrancelhas grossas e usa barba e bigode rentes ao rosto. Veste uma camiseta lisa na cor preta e está sentado em uma cadeira gamer nas cores preto e branco. Ao fundo, uma parede lisa com uma gravura d'O Senhor dos Aneis sob iluminação azul.

Você provavelmente já ouviu falar dos termos Inteligência Artificial e Machine Learning (Aprendizado de Máquinas). Neste curso, focaremos exatamente nisso. Através de um projeto prático, aprenderemos os conceitos iniciais de classificação com Machine Learning.

  1. O que são os algoritmos de Machine Learning?
  2. Quais tipos de algoritmos podemos usar para resolver problemas de classificação?
  3. Como podemos criar modelos que entendem o padrão dos dados?
  4. Como podemos avaliar o desempenho desses modelos?

Abordaremos esses questionamentos para que, no final, você possa construir um projeto de Machine Learning com classificação, desde o carregamento dos dados e a análise exploratória, até a exportação de um modelo capaz de classificar dados.

Neste curso, não vamos explorar conceitos muito avançados, pois ele é voltado para pessoas que estão iniciando na área. Para aproveitá-lo melhor, é necessário ter conhecimento em linguagem de programação Python.

Vamos nessa?

Análise exploratória - Fazendo a leitura dos dados

Temos o seguinte problema de negócio: um banco está fazendo uma campanha de marketing e quer prever quais clientes vão aderir a um investimento que está sendo oferecido a eles. Com isso, o banco pode ser mais eficiente e contatar os clientes que realmente terão interesse.

Apesar de ninguém conseguir prever o futuro, hoje em dia, nós conseguimos utilizar Machine Learning (Aprendizado de Máquina) para fazer esse tipo de previsão baseando-se em dados. Para realizar essa previsão, nós precisamos de dados históricos de clientes de campanhas de marketing anteriores, com a informação dos clientes que aderiram ou não ao investimento. Além disso, necessitamos das características desses clientes para que seja possível extrair algum padrão e chegar na resposta de aderência do investimento.

Essa tarefa é conhecida como classificação em Machine Learning. Nós podemos utilizar algoritmos que vão compreender o padrão dos dados e classificar os clientes entre os que vão aderir ao investimento e os que não vão. Em todo projeto de Machine Learning precisamos de dados, em nosso caso não será diferente. Portanto, utilizaremos uma base de dados de marketing do banco e vamos usar o Python no Google Colab para fazer essas previsões.

Upload dos dados

O primeiro passo é fazer o upload do arquivo para o Colab e fazer a leitura dos dados.

No Google Colab, vamos em "Arquivos", no menu lateral, e selecionamos a opção "Fazer o upload para o armazenamento da sessão". Em seguida, selecionamos o arquivo em formato CSV que foi disponibilizado para você na atividade "Preparando o Ambiente".

Se você não fez o download dos dados, volte a esta atividade e baixe o arquivo necessário.

O upload do arquivo será feito para a aba de "Arquivos" do Colab. Antes de fechar essa aba, vamos clicar nos três pontos ao lado do nome do arquivo e selecionar a opção "Copiar caminho". Assim, ele vai copiar para a área de transferência do computador o caminho dessa pasta de arquivos.

Leitura dos dados

Agora, podemos fechar o menu e fazer a leitura desse arquivo, utilizando a biblioteca Pandas. Então, na primeira célula, vamos importar esta biblioteca para conseguirmos ler os dados. Vamos apelidá-la de pd:

import pandas as pd

Executamos esse comando teclando "Ctrl + Enter".

Na célula seguinte, vamos armazenar esses dados em uma variável chamada dados. Eles serão lidos pela função read_csv(), da biblioteca Pandas, para a qual passaremos o caminho do arquivo que copiamos anteriormente entre aspas simples:

dados = pd.read_csv('/content/marketing_investimento.csv')

Vamos executar essa célula para fazer a leitura dos dados.

Agora que já fizemos a leitura, podemos visualizar esse dataframe apenas chamando a variável dados na célula seguinte.

dados
idadeestado_civilescolaridadeinadimplenciasaldofez_emprestimotempo_ult_contatonumero_contatosaderencia_investimento
045casado (a)superiornao242nao5871sim
142casado (a)medionao1289nao2504sim
223solteiro (a)superiornao363nao1618nao
358divorciado (a)superiornao1382nao7001sim
450casado (a)medionao3357nao2394sim
..............................
126352solteiro (a)superiornao83nao12236sim
126435solteiro (a)superiornao5958nao2151sim
126530solteiro (a)superiornao-477sim15322sim
126642casado (a)superiornao2187nao5253sim
126729solteiro (a)superiornao19nao1102sim

Nessa tabela, conseguimos visualizar os dados, que incluem a informação da idade dos clientes, o estado civil, escolaridade, inadimplência, saldo e assim por diante.

Temos várias características a respeito desses clientes e a última coluna da nossa base de dados é chamada de aderencia_investimento. Essa coluna contém a resposta para sabermos se aquele cliente aderiu à campanha ou não. Nela temos o valor de "sim", caso a pessoa tenha aderido e feito o investimento com base na campanha de marketing, e "não" caso ela não tenha feito.

Na nossa base de dados, é importante que essa coluna já esteja presente e já saibamos qual é a resposta para ensinarmos o algoritmo que vamos utilizar. Com base nas características que existem na base de dados, podemos inferir como se chega naquela resposta. A partir disso, com base nessa regra que irá criar, conseguirá fazer as previsões posteriores.

A coluna aderencia_investimento é chamada de variável alvo, pois é a variável que nós queremos fazer a previsão.

Entretanto, temos um problema em nossa base, pois não conseguimos visualizar todos os dados. Conseguimos ver somente as cinco primeiras e as cinco últimas linhas da base de dados. Nas reticências existem muitos outros dados que não conseguimos visualizar.

Caso tenha algum valor faltante, isso seria um problema no momento do algoritmo compreender esse padrão, porque ele precisa de informações a respeito dos clientes. Se algumas informações estiverem faltando, ele não vai compreender como fazer a classificação daquele cliente.

Então, precisamos detectar se existem valores faltantes na nossa base de dados. Para isso, utilizaremos o método info da biblioteca Pandas, da seguinte maneira:

dados.info()

<class 'pandas.core.frame.DataFrame'>

RangeIndex: 1268 entries, 0 to 1267

Data columns (total 9 columns):

#ColumnNon-Null CountDtype
----------------------------
0idade1268 non-nullint64
1estado_civil1268 non-nullobject
2escolaridade1268 non-nullobject
3inadimplencia1268 non-nullobject
4saldo1268 non-nullint64
5fez_emprestimo1268 non-nullobject
6tempo_ult_contato1268 non-nullint64
7numero_contatos1268 non-nullint64
8aderencia_investimento1268 non-nullobject

dtypes: int64(4), object(5)

memory usage: 89.3+ KB

Como retono, nos são mostradas quantas linhas tem na base de dados, a quantidade de colunas e a informação de cada uma das colunas. Além de mostrar o tipo daquela coluna, se é do tipo inteiro ou tipo object, também nos é mostrada a quantidade de dados não nulos de cada coluna.

Na base de dados temos 1.268 linhas e aqui está informando que em cada uma das colunas existem 1.268 dados não nulos, isso indica que não existe nenhum valor nulo na nossa base de dados.

Sendo assim, não precisaremos fazer tratamentos para lidar com dados nulos. Mas, caso você esteja trabalhando com uma base de dados que tenha dados nulos, é preciso primeiro fazer um tratamento, já que não podemos utilizar os dados nulos em algoritmos de Machine Learning. Isso porque eles precisam de informação para fazer a classificação, que no nosso caso é de clientes que estão aderindo ao investimento.

Agora que já conhecemos os nossos dados, identificamos a variável alvo e vimos que não existe nenhum valor nulo na nossa base de dados, podemos prosseguir com a análise para entender melhor os nossos dados. Isso porque, apesar de termos identificado que não tem nenhum dado nulo, não conseguimos visualizar todas as informações das colunas. Portanto, vamos primeiro explorar os nossos dados para depois prosseguir com a construção do algoritmo capaz de classificá-los!

Análise exploratória - Explorando variáveis categóricas

Nós já fizemos a leitura da nossa base de dados e não encontramos nenhum valor nulo. Isso é um bom indicativo de que não precisamos fazer nenhum tratamento nesse sentido. No entanto, ainda sabemos pouco sobre os dados.

Conseguimos visualizar apenas as cinco primeiras e as cinco últimas linhas de nossa base. A partir disso, não é possível entender como todas as colunas e valores estão funcionando. Por exemplo, na coluna "estado_civil", identificamos as categorias "casado(a)", "solteiro(a)" e "divorciado(a)". No entanto, não conseguimos determinar se essas são as únicas categorias existentes.

Além disso, podemos ter inconsistências nos dados. Por exemplo, se houver algum valor nessa coluna escrito "casado(a)" de maneira diferente, com todas as letras maiúsculas, nosso algoritmo de Machine Learning poderá identificar que essa categoria é diferente da categoria "casado(a)", mesmo que signifiquem a mesma coisa.

Por isso, precisamos examinar nossos dados. É importante fazer isso para entender se existem inconsistências e garantir que passamos informações de qualidade para o algoritmo aprender da melhor forma possível.

Nas colunas numéricas, por exemplo, "idade", não é possível compreender o intervalo que essa coluna abrange. Não conhecemos o valor mínimo ou máximo nem se existem valores inconsistentes. Por exemplo, uma idade maior que 200 anos ou uma idade negativa seriam valores impossíveis no mundo real e, portanto, atrapalhariam a compreensão do problema pelo algoritmo.

Além disso, a coluna "aderencia_investimento" é do tipo textual, ou seja, é uma coluna categórica. Essa é a característica principal para definirmos que nosso problema é do tipo de classificação. Se a coluna que estivéssemos fazendo a previsão fosse numérica, estaríamos fazendo uma regressão. Portanto, a característica categórica da coluna "aderencia_investimento" indica que nosso processo é do tipo de classificação.

Agora, vamos avançar para a etapa de examinar nossos dados, conhecida como análise exploratória de dados. Esta etapa é muito importante, pois nos ajuda a identificar inconsistências em nossos dados e corrigi-las antes de passá-los para o algoritmo.

Para realizarmos a análise exploratória, vamos utilizar a biblioteca gráfica Plotly para visualizar nossos dados de forma mais intuitiva.

Explorando os dados

Em uma célula vazia, importaremos o módulo express, da biblioteca Plotly, dando a ele o apelido de px:

import plotly.express as px

Vamos executar.

O primeiro gráfico que construiremos é para as variáveis categóricas, portanto, vamos explorar primeiro as colunas com formato textual. Utilizamos o histograma, que realiza uma contagem desses valores, nos permitindo ver quais são as categorias de cada uma dessas colunas.

Começaremos com a coluna "aderencia_investimento", que é a variável alvo. Usaremos px.histograma(), passando os dados e de qual coluna queremos fazer o histograma. Além disso, passaremos o parâmetro text_auto=True para colocar a informação numérica da contagem de cada uma das barras na própria barra:

px.histogram(dados, x = 'aderencia_investimento', text_auto = True)

Vamos executar.

Histograma com duas colunas. No eixo y, intitulado "count", dados de 0 a 800, de baixo para cima, em intervalos de 100. A primeira coluna, correspondente ao valor "sim", possui 502 contagens. A segunda coluna, correspondente ao valor "não", possui 766 contagens.

Nesse histograma, identificamos duas características na coluna: "sim" e "não", com 766 valores para "não" e 502 para "sim". Com isso, já conseguimos entender que não há inconsistências na coluna "aderencia_investimento".

Vamos prosseguir com a exploração das outras colunas. Agora, faremos de "estado_civil". Para isso, podemos copiar o código do histograma que fizemos, colá-lo na próxima célula e fazer as devidas alterações, alterando a coluna para 'estado_civil' e mantendo text_auto.

Além disso, faremos a construção das barras com base em "aderencia_investimento" para conseguirmos visualizar se existe uma diferença no padrão dos dados de cada estado civil com base na aderência. Assim, entenderemos, também, se determinado civil influencia em maior aderência ao investimento. Para isso, usaremos o parâmetro color = 'aderencia_investimento'.

Por fim, para agrupar as barras com base no estado civil, usaremos barmode = 'group'.

px.histogram(dados, x = 'estado_civil', text_auto = True, color = 'aderencia_investimento',  barmode = 'group')

Histograma com seis colunas. No eixo y, intitulado "count", dados de 0 a 500, de baixo para cima, em intervalos de 100. Para cada categoria, "casado(a)", "divorciado(a)" e "solteiro(a)", há duas barras, em azul e vermelho, que correspondem, respectivamente, ao número de pessoas que aderiram e não aderiram ao investimento dentro do grupo em questão.  Na categoria "casado(a)", temos 263 pessoas que aderiram e 475 que não aderiram. Na categoria "divorciado(a)", 74 pessoas aderiram e 88 não. Por fim, em "solteiro(a)", 165 pessoas aderiram e 203 não aderiram.

Note que ele agrupou as barras com base no estado civil e fez uma separação de cores com base na aderência, mostrando a contagem de cada um deles e permitindo entender como o estado civil influencia na aderência ao investimento.

É possível perceber que as pessoas casadas tendem a não aderir ao investimento. Já nas categorias de divorciado e solteiro, há um certo equilíbrio, pois os valores de adesão e não adesão estão próximos. Isso é interessante para avaliarmos se existe alguma diferença entre cada característica que possa influenciar na tomada de decisão.

Agora que já compreendemos um pouco sobre a coluna "estado_civil", vamos copiar o código anterior e aplicá-lo às outras colunas.

Para esta próxima análise será necessário alterar somente a variável x para 'escolaridade':

px.histogram(dados, x = 'escolaridade', text_auto = True, color = 'aderencia_investimento',  barmode = 'group')

Histograma com seis colunas. No eixo y, intitulado "count", dados de 0 a 400, de baixo para cima, em intervalos de 50. Para cada categoria, "superior", "medio" e "fundamental", há duas barras, em azul e vermelho, que correspondem, respectivamente, ao número de pessoas que aderiram e não aderiram ao investimento dentro do grupo em questão.  Na categoria "superior", temos 193 pessoas que aderiram e 220 que não aderiram. Na categoria "medio", 245 pessoas aderiram e 417 não. Por fim, em "fundamental", 64 pessoas aderiram e 129 não aderiram.

Aqui, somos capazes de visualizar os diferentes níveis de escolaridade em nossa base de dados: superior, médio e fundamental. Se observarmos a escolaridade superior, podemos ver que não há diferença substancial que defina se a pessoa aderirá ou não ao investimento. No entanto, em relação ao ensino médio e fundamental, existe uma variação muito maior entre as quantidades de cada categoria.

Portanto, é um indicativo de que essas informações são importantes para chegar ao resultado esperado de aderência ao investimento. Embora a análise de uma variável isolada não seja suficiente para definirmos uma conclusão, o agrupamento de todas as variáveis tornará a análise mais significativa e nos ajudará a chegar ao resultado esperado.

Vamos copiar novamente este código e seguir para as duas últimas colunas. Dessa vez, em vez de 'escolaridade', usaremos 'inadimplencia'.

px.histogram(dados, x = 'inadimplencia', text_auto = True, color = 'aderencia_investimento', barmode = 'group')

Histograma com quatro colunas. No eixo y, intitulado "count", dados de 0 a 700, de baixo para cima, em intervalos de 100. Para cada categoria, "nao" e "sim", há duas barras, em azul e vermelho, que correspondem, respectivamente, ao número de pessoas que aderiram e não aderiram ao investimento dentro do grupo em questão.  Na categoria "nao", temos 494 pessoas que aderiram e 751 que não aderiram. Já na categoria "sim", 8 pessoas aderiram e 15 não aderiram.

Para inadimplência, existem duas categorias: "não" e "sim". Podemos identificar que existem poucos valores "sim" e muitos valores "não". Também há uma grande diferença proporcional nos valores de "não". Para o valor "sim", a proporção dos dados é bem próxima, mas com poucos valores de "sim".

Agora, vamos partir para a última coluna, referente a se a pessoa fez empréstimo ou não. Para isso, basta aproveitarmos o código alterando o valor de x para 'fez_emprestimo':

px.histogram(dados, x = 'fez_emprestimo', text_auto = True, color = 'aderencia_investimento', barmode = 'group')

Histograma com quatro colunas. No eixo y, intitulado "count", dados de 0 a 600, de baixo para cima, em intervalos de 100. Para cada categoria, "nao" e "sim", há duas barras, em azul e vermelho, que correspondem, respectivamente, ao número de pessoas que aderiram e não aderiram ao investimento dentro do grupo em questão.  Na categoria "nao", temos 459 pessoas que aderiram e 639 que não aderiram. Já na categoria "sim", 43 pessoas aderiram e 127 não aderiram.

Perceba que para esta coluna existem muito mais valores para "não" do que para "sim".

Conseguimos compreender um pouco melhor nossos dados. Embora seja um processo repetitivo, é fundamental para visualizarmos se existem valores discrepantes, ou não estejam de acordo com o que está descrito em cada característica, para entendermos o padrão desses dados.

No próximo vídeo, exploraremos as variáveis restantes, que são numéricas.

Sobre o curso Classificação: aprendendo a classificar dados com Machine Learning

O curso Classificação: aprendendo a classificar dados com Machine Learning possui 133 minutos de vídeos, em um total de 42 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!

Conheça os Planos para Empresas