Home / Data Science / Normalizando dados com sklearn

Normalizando dados com sklearn

Quando trabalhamos com algoritmos de machine learning, existe sempre a recomendação de que todos os dados a serem trabalhados sejam numéricos. Porém no mundo real isto raramente acontece, pois nossos dados muitas vezes possuem categorias descritivas (string). 

Neste exemplo vemos que o atributo neighborhood é um texto, logo precisamos converte-lo em número. Você deve ter pensado na seguinte solução: Por que simplesmente não converto em números diretamente esta categoria, como por exemplo:

ID 1 – ‘Copacabana’
ID 2 – ‘Ipanema’,
ID 3 – ‘Brooklyn’,
ID 4 -‘Queens’

O problema desta solução é que o Sklearn considera números como quantidades algébricas, então ele tentaria por exemplo somar estes IDs, oque não faria nenhum sentido.

Por exemplo: Copacabana(1) + Ipanema(2) = Brooklyn(3) ?

Para resolver este problema, a biblioteca Sklearn possui uma feature engineering muito interessante chamada DictVectorizer.

Ela cria novas colunas referentes á quantidade de itens de uma categoria. No caso de neighborhood nós possuímos 4: Copacabana, Ipanema, Brooklyn e Queens, então 4 colunas novas são criadas. Aonde cada uma é correspondente, o número 1 é preenchido, as outras permanecem com 0:

Utilizando o código abaixo, conseguimos verificar as categorias criadas:

Esta solução também possui um problema: dependendo da quantidade de colunas e categorias, você terá dezenas ou centenas de colunas.

Uma solução é setar o Sparse = True. Desta maneira ele armazena todos as células com 0 em um Compressed Sparse Row format:

 

Faça o download do código clicando aqui

Referência: Python Data Science Handbook

Leave a Reply

Your email address will not be published. Required fields are marked *