Alura > Cursos de Data Science > Cursos de Machine Learning > Conteúdos de Machine Learning > Primeiras aulas do curso Machine Learning: classificação por trás dos panos

Machine Learning: classificação por trás dos panos

Classificação - Apresentação

Olá, meu nome é Ana Clara Mioto, eu sou instrutora na Escola de Dados da Alura e vou te acompanhar nesse curso de Machine Learning: classificação por trás dos panos. Esse curso é para aquelas pessoas que desejam dar os primeiros passos em tarefas de Classificação em Machine Learning.

Nós estudaremos três tipos de modelo: o KNN, o Bernoulli Naive Bayes, as Árvores de decisão, e toda a sua matemática por trás. Além disso, você vai conseguir implementar e entender melhor como esses modelos funcionam. E aprender a escolher o melhor modelo para solucionar um problema na empresa de telecomunicações, Alura Voz. Vamos lá.

Classificação - Importando os dados

Parabéns. Você acaba de ser contratado como cientista de dados na grande empresa de telecomunicações Alura Voz.

Nos seus primeiros dias você foi convidado para participar de uma reunião com a equipe de vendas. Lá foram passados alguns parâmetros importantes de serem acompanhados e controlados como, por exemplo, o Churn. Que representa a taxa de evasão dos clientes, ou seja, se esse cliente tem o potencial ou não de nos deixar. Você, como um cientista de dados todo experiente, logo faz uma indicação de uma possível solução para controlar esse número de Churn. Você indica classificar os clientes como possíveis pessoas a deixarem ou não a nossa empresa.

Para começar esse trabalho você solicita à equipe de vendas as informações que iremos mexer exatamente agora. Vamos lá.

Durante todo o andamento do projeto nós vamos trabalhar com a linguagem de programação Python e a sua biblioteca Pandas, muito conhecida na área de ciência de dados por auxiliar na transformação, limpeza e modificação dos dados.

Para começarmos vamos importar a biblioteca e sua função, utilizando o import pandas e apelidando essa biblioteca com as pd, que vai facilitar chamar as funções dessa biblioteca lá na frente, import pandas as pd.

Agora vamos clicar em "Shift Enter" e rodar a célula. Também podemos clicar aqui no canto esquerdo da célula na seta que irá rodar da mesma forma que o "Shift Enter". A biblioteca está carregada.

Agora, vamos precisar importar nossos dados, nossas informações que a equipe de vendas que a equipe de vendas passou. Começamos criando uma variável chamando dados que irá receber essas informações, armazenar para que ao decorrer do projeto possamos chamar apenas os dados e, assim, carregar todas as informações que temos da equipe de vendas, dados = pd.read_csv(' ').

O pd, estamos chamando a biblioteca Pandas, .read_csv, que indica que estamos querendo ler o tipo de arquivo em formato CSV. Abre e fecha parênteses, abre e fecha aspas.

Aqui entre as aspas e o parênteses nós vamos colocar o caminho do arquivo onde o nosso arquivo está armazenado. E, claro, uma etapa muito importante que não pode deixar de ser vista é o preparando ambiente. E lá já sabemos que o nosso arquivo se encontra aqui no notebook.

Vamos para a pasta de arquivos, clicamos a direta do nome do nosso arquivo nos três pontinhos e "Copiar caminho". Fechamos a aba do lado e colamos o caminho entre as aspas e o parênteses.

dados = pd.read_csv('/content/sample_data/Customer-Churn.csv') 

Da mesma forma rodamos a células e os dados estão carregados.

Agora, vamos ver de fato, quais são as informações que temos, quantas informações temos. Primeiro vamos chamar a função shape, dados.shape que irá nos mostrar o seguinte: temos dois valores entre parênteses, (7043, 18), o primeiro representa as linhas do nosso conjunto de dados, ou seja, quantos clientes temos disponíveis na nossa base. Temos 7043 clientes. À direita, temos o 18 que representa o número de colunas do nosso conjunto de dados ou também as nossas variáveis.

Você deve estar se perguntando: "Ana, eu quero saber de fato quais informações nós temos." Vamos chamar a função head para mostrar as primeiras cinco linhas dos nossos clientes, então dados.head() e rodamos a célula.

Pronto. Aqui temos as cinco primeiras linhas de clientes, os cinco primeiros clientes da nossa base, e as informações que contém dentro dela. Vamos ver com mais detalhes.

A primeira coluna é a que indica maior de 65 anos, sendo que 1 é igual a sim e 0 é igual a não. E vemos que os primeiros clientes são todos menores de 65 anos. Depois temos o Cônjuge, se a pessoa é casada ou não. Sim e não. Nos dependentes é se há filhos ou pessoas que dependam dessa pessoa, sim e não.

Os meses de contrato que é o tempo que essa pessoa está atualmente com um contrato em vigor, ou seja, o contrato está em andamento. O telefone fixo, se a pessoa possui ou não telefone fixo. E agora vamos entrar nos serviços adicionais que dependem um dos outros, por exemplo, as várias linhas telefônicas.

Temos a questão de “sem serviço telefônico”, o que quer dizer que a pessoa não tem telefone fixo ou não e sim, que indica que a pessoa tem telefone fixo, mas não tem várias linhas. E sim, caso ela tenha várias linhas. Depois temos o serviço de internet, que mostra o tipo de internet que essa pessoa contratou, DSL, fibra óptica, cabo.

Depois temos segurança online, também sim ou não. Se ela contratou segurança online e no caso dela ter ou não assinado o serviço de internet. O backup online também depende do serviço de internet, sim e não. Seguro no dispositivo também depende da internet e se a pessoa quer ou não o seguro. O suporte técnico, se a pessoa quer esse adicional de um tempo menor de espera, um suporte mais rápido, sim ou não.

TV a cabo, se a pessoa assinou ou não. Streaming de filmes, se a pessoa assina ou não e depende da internet também. E temos também o tipo de contrato, mensalmente, anual, semestralmente e assim por diante. O pagamento online, se a pessoa decidiu receber por e-mail, pagar online ou se ela prefere receber no conforto da casa dela por Correios, sim e não.

A forma de pagamento que se a pessoa paga em débito em conta, cheque de digital, cheque de papel, cartão de crédito. Conta mensal, que é o valor que ela paga mensalmente no atual contrato dela. E o Churn, se a pessoa deixou de ser a nossa cliente ou não.

Vamos relembrar o nosso objetivo. Nós recebemos essas informações com o objetivo de selecionar algumas características para poder classificar potenciais clientes a deixarem ou não. Vocês se lembram?

Classificação - Diferentes variáveis

Antes de entrarmos de fato na definição de classificação, vamos entender melhor quais os tipos de variáveis que temos no nosso conjunto de dados.

Quando estamos trabalhando com os dados podemos ter dois tipos de variáveis: as variáveis categóricas e as variáveis numéricas.

Vamos retomar a nossa função head para identificar melhor quais os tipos de variáveis que temos no nosso Dataset. Vamos lá.

Primeiro, vamos conferir a variável que está aqui na tabela com o termo Cônjuge, temos sim e não. Podemos classificar nossos clientes como pessoas que possuem ou não possuem cônjuge, ou seja, possuem ou não parceiro, ou uma parceira. Isso representa uma forma de agrupamento por características em comum, isso quer dizer que temos a nossa primeira variável categórica.

E as variáveis categóricas não representam somente aqueles agrupamentos por características em comum, mas também valores qualitativos. Como, por exemplo, a nossa variável dependentes, se a pessoa possui ou não filhos, se possui ou não alguém que dependa dela no plano, que ela assina aqui na nossa empresa. Temos outra variável categórica contendo sim e não.

Agora, vamos conferir os meses de contrato. Nós temos o tempo que a pessoa permanece atualmente com o contrato em ativo, que ela está em contrato ainda com a nossa empresa. Temos aqui um mês, 34 meses, dois meses. Isso aqui são valores numéricos, meses de contrato é uma variável numérica que representa uma medida ou um conjunto infinito de valores.

No nosso caso, meses de contrato é uma medida de tempo. Agora, atenção, temos um maior de 65 anos, ele também está contendo números, 0 e 1. Já sabemos que não é 0 e 1 é o sim. Maior de 65 anos é uma variável numérica? Nesse caso não, porque podemos agrupar nossos dados como pessoas idosas que contém mais de 65 anos e pessoas mais novas, não idosas ainda que possuam menos de 65 anos. Maior de 65 anos também é uma variável categórica, apesar de conter valores numéricos.

Agora vamos olhar as outras variáveis, temos telefone fixo também contendo sim e não, também valor categórico, várias linhas telefônicas contendo sem serviço telefônico, não e sim. Temos o serviço de internet que é o tipo de serviço que a pessoa contrata, DSL, fibra óptica, podemos agrupar essas pessoas por tipo de serviço, também é uma variável categórica.

Segurança online sim e não, também é uma variável categórica. Lembrando, que segurança online, backup on-line, seguro no dispositivo, TV a cabo, streaming de filmes e suporte técnico dependem da pessoa assinar ou não o serviço de internet, são também variáveis categóricas. E tem aquela informação: sem serviço de internet, não e sim.

Agora, tipo de contrato também, podemos agrupar os clientes por tipos de contrato, aqueles clientes que assinam mensalmente, os clientes que assinam um ano. Temos a forma pagamento online, os clientes que ainda preferem receber cartas pelo Correio ou receber o boleto no seu e-mail.

A forma de pagamento, cheque digital, cheque em papel, débito em conta, crédito, é também uma variável categórica. Agora, conta mensal é uma variável numérica porque também representa uma medida de valor, dinheiro de custo. Ou seja, quanto que a pessoa está pagando todo mês para a nossa empresa.

E, claro, a mais importante, o Churn. Que representa se a pessoa está ou não mais na nossa empresa, se ela assina ainda ou não, se ela é fidelizada ou não, sim e não. Também é uma variável categórica.

Deu para entender melhor quais são os valores numéricos, quais são os valores categóricos? Afinal de contas, por que precisamos saber dessas informações? É simples, quando estamos trabalhando com algoritmo de Machine Learning, temos que sempre lembrar que a máquina aprende por números.

Quando estamos trabalhando com valores categóricos precisamos pegar essas informações e transformar de uma forma que a máquina possa aprender ou classificar essas informações. Eu vou ensinar duas formas para você aprender a processar, transformar esses dados antes de fato criarmos algoritmo para a máquina classificar.

A primeira forma é uma forma manual, quer dizer que vamos criar primeiro o dicionário com os respectivos valores atuais e o que queremos modificar, o novo valor. Depois vamos pegar essa informação e colocar com a função replace, substituir a partir desse dicionário as informações que contenham sins e nãos na nossa tabela.

Vamos começar criando o dicionário. Vamos criar uma variável para armazenar essas informações do dicionário, traducao_dic = {'Sim' : 1, 'Nao: 0}, onde o 1 indica que queremos que todos os termos com sim na nossa base de dados seja substituída pelo valor 1 e todos os valores contendo o não, sem o til, colocamos 0.

Agora, depois de colocar a criação desse dicionário vamos chamar a função para substituir o dicionário na nossa base de dados e armazenar esses dados modificados em uma variável. dadosmodificados = dados e como queremos alterar o conjunto de informações de algumas colunas, porque não são todas as colunas que contém sim e não, vamos abrir dois colchetes e colocar as colunas que realmente contém sim e não. Faremps:

dadosmodificados = dados [['Conjuge', 'Dependentes', 'TelefoneFixo', 'PagamentoOnline', 'Churn']]

Todas entre aspas e com vírgulas separando cada uma das colunas.

Depois colocamos o ponto e chamamos a função replace e entre parênteses colocamos o nosso dicionário.

dadosmodificados = dados [['Conjuge', 'Dependentes', 'TelefoneFixo', 'PagamentoOnline', 'Churn']].replace(traducao_dic)

Em seguida, rodamos a nossa ação.

Aqui apareceu o nosso conjunto de colunas modificadas, dá para ver aqui todos os sins e nãos, 1 e 0, não tem nenhum sim e não mais escrito. Agora a máquina vai ser capaz de entender essas informações, porém havia outras colunas na nossa base de dados com informações além de sim e não como, por exemplo, o próprio serviço telefônico, se a pessoa tem ou não, sem serviço telefônico, o tipo de internet.

Eu vou ensinar agora a segunda forma de lidar com essa informação, que é de forma automatizada utilizando a função get_dummies. Essa função vai pegar as colunas e identificar as categorias presentes nessas colunas. E a partir de um loop vai pegar todas essas categorias presentes nas colunas e transformar em novas colunas cada uma dessas categorias contendo 1 e 0 ou true e false, verdadeiras e falsos.

Vamos começar criando uma variável também para armazenar esses novos dados modificados pela função get_dummies´. Criamosdummie_dados = pd.get_dummies, estamos chamando a funçãoget_ dummies` da biblioteca Pandas. Abre a fecha parênteses e começamos colocando o conjunto de dados que queremos modificar.

Colocamos dados.drop abre e fecha parênteses, abre e fecha colchetes e colocamos as colunas que não queremos que seja modificada pelo get_dummies, que são as colunas que já modificamos de forma manual. Queremos remover essas colunas dos dados para que elas não sejam novamente modificadas. Colocamos uma vírgula e definimos as informações como colunas axis=1 e fecha parênteses.

dummie_dados = pd.get_dummies(dados.drop(['Conjuge', 'Dependentes', 'TelefoneFixo', 'PagamentoOnline', 'Churn'], axis=1))

Depois que realizamos essa modificação nos dados nós temos duas variáveis contendo duas formas de dados modificados, temos os dados modificados, a variável e a variável dummie_dados. Porém, precisamos retornar o nosso conjunto de dados original, essas informações precisam estar juntas para podermos treinar a máquina.

Para isso vamos juntá-las através da função concatenação. Vamos criar a variável dados_final para ser o nosso conjunto de dados final a ser trabalhado depois desse pré-processamento, igual a pd.concat. Estamos novamente chamando uma função da biblioteca Pandas. Abre e fecha parênteses, abre e fecha colchetes, colocamos as duas variáveis que queremos juntar as informações, dadosmodificados, dummie_dados, aí colocamos vírgula e definimos que queremos juntar essas duas variáveis por meio das suas colunas, definimos axis=1, sendo 1 colunas e 0 linhas.

dados_final = pd.concat([dadosmodificados, dummie_dados], axis=1)

Vamos ver se deu certo. Chamamos a função head para verificar, dados_final.head() e funcionou. Aqui temos todas as nossas variáveis modificadas agora com as variáveis categóricas com valores numéricos.

Agora sim, você e os dados estão de fato prontos para entendermos melhor o que é a classificação.

Sobre o curso Machine Learning: classificação por trás dos panos

O curso Machine Learning: classificação por trás dos panos possui 118 minutos de vídeos, em um total de 56 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, a inteligência artificial da Alura

    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