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 Regressão com Sklearn: desenvolvimento, previsão e otimização

Regressão com Sklearn: desenvolvimento, previsão e otimização

Modelo de regressão - Apresentação

Olá, meu nome é Ana Mioto, sou instrutora da escola de dados, e irei te acompanhar neste curso, que é para aquelas pessoas que desejam dar os primeiros passos em tarefas de regressão em machine learning. Nesse curso, nós veremos três modelos diferentes: regressão linear, árvore de decisão e floresta aleatória para regressão.

Além disso, você irá aprender como implementá-los, entender como funcionam e otimizar, e por fim como escolher o melhor modelo para solucionar um problema na imobiliária “Alura Andar”.

Modelo de regressão - Carregando os dados

Nos fazemos parte do time de dados da empresa “Alura Andar”. E foi solicitado pela equipe da administração que desenvolvêssemos uma ferramenta para auxiliar os corretores de imóveis a precificar os novos imóveis. E claro, automatizar esse processo.

Temos dados cadastrais de imóveis e seus respectivos preços. Então, queremos prever os preços dos novos imóveis. Para solucionar esse problema, podemos desenvolver modelos de regressão. E como faremos isso? Utilizando de técnicas de machine learning supervisionado, a biblioteca Sklearn e o ambiente Google Colab e, claro, a linguagem de programação Python.

Então, vamos lá. Tudo começa com os dados que iremos trabalhar. Os dados que recebemos da equipe de administração foram extraídos da API da empresa. O que isso quer dizer? Quer dizer que os dados foram extraídos de uma interface de programação de aplicação. Ou seja, API é um conjunto de normas que possibilita a comunicação entre plataformas.

Imagina que o site da “Alura Andar” contém um formulário em que você pode inserir as informações cadastrais dos imóveis. E a partir desse site da “Alura Andar”, foram extraídos dados e nos entregue. Só que ele não está no formato que estamos acostumados, o CSV, ele está em formato JSON. É o formato JavaScript Object Notation, ou seja, um arquivo em notação JavaScript.

E para entendermos melhor como ele é estruturado, eu trouxe para você um visualizador de arquivo JSON. Se você entrar no Google e pesquisar “visualizador de json”, é o primeiro que aparece, mas para facilitar, eu trouxe o link no notebook. Então, vou clicar e vai abrir o site para nós. Para vermos como funciona, vou pegar um trecho do nosso conjunto de dados recebidos. Eu abri em um bloco de notas, vamos copiar um pequeno trecho com “Ctrl + C”, e colar na aba “text” do nosso site.

Vamos fechar os dados copiados com colchetes, como se só isso fosse o nosso arquivo. Vamos agora clicar na aba “Format”, logo embaixo da aba “Text”, que irá ordenar nossos dados copiados. Você já deve ter notado alguma coisa muito semelhante na forma como esses dados estão estruturados. É isso aí, os dados estão estruturados em uma forma muito parecida com o dicionário de Python. Então, podemos ver várias estruturas, conjuntos, listas como ident, embaixo tem outra estrutura listing, e dentro de listing temos tipos, e dentro de tipos temos unidade e usage.

Então, quer dizer que são estruturas dentro de outras estruturas, estruturas alinhadas com seus respectivos valores. Agora eu vou mostrar na aba “Viewer”, à esquerda da aba “Text”, uma interface mais amigável de entender como essa estrutura está ordenada. Então, vamos clicar em “Viewer”, e vemos todos os números dos respectivos imóveis cadastrados.

Se clicarmos no “+” à esquerda das chaves do cliente 0, vamos pegar o imóvel 0, clicamos nele, abre outras duas estruturas. Então, temos a estrutura “ident” e “listing”. Como vimos no “Text”. Se clicarmos novamente no “+” no “ident”, abre como se fosse o nosso dicionário. Então, dentro de “ident” temos o customerID e seu respectivo valor. E temos o “source” e seu respectivo valor, “Website”. E se fizermos a mesma coisa com o “listing”, também vai abrir. Agora, outras estruturas, outros conjuntos, outros dicionários.

Entendemos o que é o arquivo JSON, já sabemos como ele é ordenado, como ele funciona. Então, vamos voltar para o Colab e começar a trabalhar com esses dados. E para começar, precisamos carregar as bibliotecas que vamos utilizar durante esse desenvolvimentos dos modelos.

Então, vamos importar a biblioteca Pandas, então import pandas as pd, vamos apelidar a biblioteca de “pd”, e fazemos a mesma coisa com a biblioteca Numpy, só que apelidamos ela de “np”, import numpy as np. E vamos lá, “Shift + Enter”, ou clicamos na seta à esquerda da célula para rodar.

Agora, precisamos carregar os dados no notebook. Como fazemos isso? Primeiro, precisamos criar uma variável para armazenar essas informações. Então, vamos lá, criamos a variável dados, chamamos a biblioteca panda e a função da biblioteca para ler nosso tipo de arquivo, então dados = pd.read.json().

Agora, dentro desses parênteses precisamos definir alguns parâmetros para que a função read.json possa carregar nossos dados. A primeira chama path_or_buff= ‘’. Nesse caso, vamos colocar o caminho dos nossos dados, onde nossos dados estão armazenados. E um passo muito importante feito anteriormente no “Preparando ambiente”, sabemos que nossos dados já se encontram carregados no notebook. Então, vamos simplesmente clicar em “Arquivos”, e copiar o caminho do arquivo nos três pontinhos à direita do nome do arquivo.

E colamos entre as aspas, então path_or_buff= ‘content/sample_data/imoveis.json’. Agora, escrevemos orient=. Esse parâmetro orient vai dizer a forma como os nossos dados estão estruturados dentro do JSON. Como as strings estão estruturadas. Como podemos ver no nosso visualizador de JSON, estava “ident”, abria uma estrutura e já tinha costumerID e seu respectivo valor, assim como source e seu respectivo valor.

Então, a orientação do nosso arquivo JSON está em orientação colunas. E isso significa que podemos abrir a documentação do Pandas, para entender melhor os tipos de orientação, mas esse formato quer dizer que está em formato de coluna, vai direcionar índice e vai direcionar valor. Como nós pudemos observar no visualizador de JSON. Então, colocamos orient= ‘columns’, e embaixo escrevemos dados, para verificar se carregou corretamente as nossas informações. Vamos rodar.

Perfeito. Você já observa de primeira que ainda não está na estrutura que estamos acostumados, que é o dataframe, ou em formato de tabela. Mas já começou a organizar de uma forma mais clara, mais visual. Temos duas colunas, a “ident” e a “listing”, e dentro dessas colunas tem as outras estruturas.

Mas como fazemos para entender melhor o que está escrito dentro? Nós vimos no visualizador, mas como fazemos no notebook? Vamos pegar novamente o cliente 0, o imóvel 0 cadastrado. Escrevemos dados.ident[0]. Ele vai chamar as informações que estão na coluna "ident” linha 0. Vamos rodar.

Dentro da linha 0 temos o customerID e seu valor, e temos o ’source’: ‘Website’ e seu valor. Então vimos a estrutura dentro de “ident”. Agora, vamos ver dentro de “listing”, qual é a estrutura. Então dados.listing[0]. E ele mostra as várias estruturas dentro da outra estrutura “listing”. Temos o endereço, dentro do endereço temos cidade, localização, bairro e zona. E dentro de “filters”, que são as características, temos banheiro, quarto, andar, vagas, suítes, área total, unidades por andar, tipo de unidade no andar, áreas utilizadas, que são aquelas áreas construídas, usáveis, temos a estrutura preço e tipos.

Visualizamos a estrutura do nosso JSON, mas como passamos essa informação, contratamos esse arquivo, para que fique no formato dataframe, que estamos acostumados a trabalhar?

Modelo de regressão - Tratamento de dados inicial

Antes de realmente desenvolvermos nosso modelo de regressão para auxiliar os corretores da “Alura Andar”, nós precisamos aplicar um pré-processamento nos dados. Como sabemos, os nossos dados estão em um formato JSON, e precisamos transformá-los em um formato que estamos acostumados, em um formato de tabela ou dataframe. E como fazemos isso?

Vamos aplicar a função normalize nos nossos dados. Ela transformará cada uma das estruturas em um dataframe. Vamos lá. De volta ao Colab, vamos criar uma variável para armazenar esses dados JSON transformado. Então, dados_lista1 = pd.json_normalize(). Então, estamos chamando a função normalize da biblioteca Pandas.

Dentro dos parênteses colocamos a primeira estrutura dados.ident, e já vamos colocar um dados_lista1.head, para verificar se ocorreu tudo certo na nossa normalização. Então, vamos rodar. Agora temos colunas customerID, source, e as linhas. A primeira estrutura está normalizada, vamos para a segunda estrutura, que é a “listing”. Então, vamos lá, dados_lista2 = pd.json_normalize(dados.listing, sep= ‘ ‘_). Por que estamos colocando um separador? Porque quando for carregado os dados dessa estrutura, ele vai carregar todas as estruturas que estão dentro das outras estruturas.

Então, precisamos colocar o underline para saber identificar. Por exemplo, temos a estrutura endereço, vai ser endereco, sep= e o nome de cada um dos valores dentro dessa estrutura, cada um dos índices. E a mesma coisa para as outras estruturas, estrutura tipo, estrutura preço, e vamos saber de onde veio aquelas informações, de qual estrutura, o que significa aquela informação. Então, também vamos escrever um dados_lista2.head para verificar da mesma forma que fizemos anteriormente.

E dá para ver que temos types_unit, types_usage, address_city, address_localization_lon, que é longitude, address_localization_lat, latitude, então dá para vermos de qual estrutura veio cada uma das informações. E dá para saber do que se trata, o que essa informação representa, que característica é do nosso imóvel.

Uma questão é que nós criamos dois dataframes separados, precisamos juntá-los. Então, vamos utilizar da função concat, vamos concatenar esses dataframes a partir das colunas. Como fazemos isso? Vamos criar uma variável final, para armazenar todos esses dados juntos, então dados_imoveis = pd.concat([dados_lista1, dados_lista2], axis=1), estamos chamando a função de concatenação da biblioteca Pandas, e colocamos os dois dataframes que desejamos. Então, estamos dizendo que vamos juntar os dois dataframes pelas colunas.

E logo embaixo, novamente vamos colocar dados_imoveis.head, para já verificarmos se ocorreu tudo certo na junção. Vamos rodar a célula, e ele nos mostra todos os dados extraídos na nossa API, e agora em um formato que conseguimos trabalhar. Então “costumerID”, “source”, tipo de unidade, tipo de uso, endereço da cidade e assim por diante. Uma observação que podemos ver, é que está mostrando 5 linhas e temos 21 colunas no nosso conjunto de dados.

Vamos ver agora com um pouco mais de detalhes quanto imóveis temos no nosso conjunto de dados, e quantas características. Então, dados_imoveis.shape. O primeiro representa o número de linhas, então, o número de imóveis cadastrados. Então, o “Alura Andar” possui 73.615 imóveis, e à direita temos o número de características, então, 21 características são utilizadas para cadastrar esses imóveis.

Vamos ver agora com um pouco mais de detalhes essas informações. Vamos criar um looping, um for, para passar por todas as colunas e verificar os tipos únicos que há dentro de cada uma dessas colunas, como se fosse uma contagem. Então, vamos lá, for coluna in dados_imoveis.columns:. E vamos escrever embaixo print(‘=====’*30), que é como se fosse um divisor de cada uma das colunas que estamos analisando. Também colocamos o print(dados_imoveis[coluna].value_counts()). Vamos rodar.

Agora vamos analisar com um pouco mais de detalhes as informações que temos. Para entender os tipos de tratamentos que podemos fazer, e quais informações realmente temos, que já podemos pensar em utilizar para os nossos modelos de regressão. Então, primeiro temos o customerID, que é o número de identificação de cada um dos imóveis, do cliente associado a esse imóvel.

Depois temos “source”, que é a fonte de onde esses dados foram extraídps, então, todos eles foram extraídos do website do “Alura Andar”. Próxima informação é o tipo de unidade, então, o tipo de imóvel, apartamento, casa e outros.

Temos também os tipos de uso. Então, ou é residencial, ou é comercial. Temos também o endereço, a cidade de onde vem, e já podemos observar que a grande maioria é do Rio de Janeiro. Podemos pensar que a sede da “Alura Andar” é no Rio de Janeiro, então a grande concentração de imóveis é do Rio de Janeiro.

A próxima é a localização longitude, e localização latitude, temos a zona em que se situa esse imóvel, e temos zona oeste, zona sul, zona norte, zona central e o valor vazio. Vamos ficar atentos à isso. Depois temos o bairro, a vizinhança, então, os bairros que estão cadastrados de cada um dos imóveis, temos os respectivos preços de cada um desses imóveis, temos a taxa de IPTU, a taxa de condomínio, temos o número de quartos, temos também números de banheiros, temos as suítes, então, quantas suítes tem em cada um dos imóveis, temos também vagas, número de vagas disponíveis, parking spaces, áreas úteis, quantidade de áreas úteis dentro do imóvel, área total.

Temos os andares, então quantos andares tem esse imóvel, o tipo de unidade por andar, e por fim a quantidade de unidades por andar. E agora que vimos esses dados, entendemos um pouco de cada um deles, precisamos aplicar para processamento. Qual o primeiro pré-processamento que vamos fazer?

Sobre o curso Regressão com Sklearn: desenvolvimento, previsão e otimização

O curso Regressão com Sklearn: desenvolvimento, previsão e otimização possui 134 minutos de vídeos, em um total de 58 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