Blog

Postado em em 18 de julho de 2022

Feature Engineering em Python para Projetos de Ciência de Dados

Hoje eu quero falar sobre Feature Engineering e como você vai conseguir viabilizar seus dados para colocá-los dentro de um modelo!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Feature Engineering

O que é esse tal de Feature Engineering? É o processo de selecionar, manipular e transformar dados brutos em um recurso que pode ser utilizada em uma aprendizagem supervisionada.

Nessa aula eu vou te mostrar como essa parte de extrair desses dados brutos, os melhores recursos (features) para o nosso modelo de forma a aumentar a acurácia.

Tratando Variáveis de Texto no Python

Aqui nós vamos utilizar um exemplo que vimos na aula de Limpeza de Dados (Data Cleaning), se ainda não assistiu não tem problema, pois vamos partir utilizando os dados finais da aula.

Mas é interessante que depois dessa aula você dê uma olhada, pois o conteúdo de limpeza de dados é muito importante!

Base de dados inicial (já com processo de limpeza)
Base de dados inicial (já com processo de limpeza)

Aqui nós temos as informações que finalizamos na aula anterior depois de fazer o tratamento.

Só que se rodarmos os modelos com esses dados, não vai funcionar, pois temos as informações como string.

O modelo vai precisar dessas informações como números para que seja possível utilizar o modelo sem nenhum erro.

Aplicando o modelo de Regressão Linear
Aplicando o modelo de Regressão Linear

Aqui você vai notar que se pegarmos essa nossa base e tentar colocar no modelo de Regressão Linear nós vamos ter um erro.

ValueError: could not convert string to float: ‘F’

Isso quer dizer que o não foi possível converter o tipo de string (texto) para float (que é um número).

Dessa forma nós vamos precisar tratar esses dados para transformá-los em valores numéricos antes de colocar no nosso modelo.

Ajustando os dados para inserir no modelo
Ajustando os dados para inserir no modelo

Para fazer esse tratamento nós vamos utilizar o One Hot Encoding, que vai permitir a transformação dessas strings em valores numéricos.

OBS: O One Hot Encoding vai servir para tratar valores que não tem relação de ordem entre eles, então para o estado civil e gênero podemos fazer isso tranquilamente.

Então para o estado civil C por exemplo, nós vamos ter uma nova coluna onde quando tivermos esse estado civil vamos atribuir o valor 1, caso contrário o valor 0.

Podemos fazer o mesmo procedimento para o gênero. Então para cada informação de gênero e estado civil vamos ter uma coluna onde se aquela informação for verdadeira vamos ter o valor 1 somente em uma coluna.

Na coluna de gênero por exemplo só temos ou F ou M, então não será possível uma pessoa com o gênero F e M ao mesmo tempo, então quando um estiver com o valor 1 o outro vai estar com o valor 0.

Isso vale para o estado civil, a pessoa só vai poder ter um estado civil, então quando um valor estiver igual a 1 os outros terão valores iguais a 0.

Então no código nós fizemos essa transformação com o One Hot Encoder e depois transformamos essas informações em um array.

Só que para juntar isso dentro da nossa tabela vamos precisar transformar os dados em um Data Frame, que é possível com a biblioteca pandas!

Transformando o array em Data Frame e concatenando a base de dados
Transformando o array em Data Frame e concatenando a base de dados

Após transformar as informações podemos concatená-las com a nossa base de dados para conseguirmos visualizar tudo de uma forma melhor.

Agora como temos valores que tem uma relação de ordem, que é a nossa categoria, vamos utilizar o Ordinal Encoding.

Essa relação de ordem é porque as categorias do cliente vão fazer diferença, pois pode ter mais recursos e benefícios. Isso já não acontece com gênero e estado civil, pois nesse caso isso não afeta esses benefícios ou recursos.

Feature Engineering
Ajustando a coluna de risco

Aqui vamos fazer o mesmo procedimento, só que agora para a coluna de risco.

Feito isso podemos ajustar a coluna CatVIP para verificar se o cliente é vip ou não. Nesse caso podemos utilizar a função IF só para verificar se o cliente é Alpha ou Beta e a partir disso classificar em 1 ou 0.

Feature Engineering
Ajustando a coluna CatVip

Agora nós podemos limpar novamente nossa base de dados para ficarmos apenas com informações numéricas e poder assim, aplicar o nosso modelo de Regressão Linear.

Feature Engineering
Aplicando o modelo de Regressão Linear

Com isso conseguimos viabilizar o nosso modelo. Nesse momento não vamos entrar em detalhes do que significam esses valores, se estão bons ou não.

A ideia dessa aula era justamente viabilizar o nosso modelo para que pudéssemos aplicar um modelo e conseguir os resultados.

Conclusão – Feature Engineering

Nessa aula eu te mostrei o Featuring Engineering, que é uma forma de viabilizar os nossos dados para colocá-los em modelos.

Então o objetivo foi sair de uma base de dados com informações em texto (string) e transformá-la em uma base de dados em um formato numérico para que seja possível aplicar o nosso modelo de Regressão Linear.

Hashtag Treinamentos

Para acessar outras publicações de Ciência de Dados, clique aqui!


Quer aprender mais sobre Python com um minicurso gratuito?


Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador