Você já construiu um modelo de aprendizado de máquina que não funcionou tão bem quanto esperava?
Quer aprender a implementar um modelo com ajustes de dados para melhorar sua eficácia?
Então venha e mergulhe agora nesse tema!
Meu nome é Afonso Rios, sou instrutor de dados aqui na Alura.
Audiodescrição: Alfonso se declara como um homem de pele morena, cabelos e olhos castanhos escuros. Possui uma barba curta, usa uma roupa preta com o símbolo da Escola de Dados. Ao fundo, há uma parede com iluminação azul e objetos que remetem tanto à Alura quanto ao futebol.
Neste curso, vamos trabalhar como cientistas de dados em uma imobiliária e precisamos precificar o valor de venda de casas, auxiliando as pessoas vendedoras da imobiliária a negociar essas propriedades com preços mais justos, com potenciais clientes.
Objetivo: precificar casas para auxiliar pessoas vendedoras
No modelo que vamos construir conseguiremos trazer diferentes características das casas.
Por exemplo, as características da área, da distância do metrô e o fato de existir o segundo andar, etc.
Vamos conseguir aplicar o modelo para precificar essa casa com essas características. Temos, por exemplo, uma casa no valor de R$ 1.245.551,34 com o nosso modelo sendo aplicado a ela.
Para isso, vamos utilizar o Collab, explorando uma base de casas que já foram vendidas e suas características.
Nesta base, vamos identificar:
Além disso, vamos fazer previsões com mais casas utilizando esse modelo.
Tudo isso para chegar a um modelo que seja rápido, que deixe as pessoas vendedoras menos dependentes de processos manuais para chegar à valorização de uma casa. E claro, sendo um processo eficiente, agregando muito valor à imobiliária.
Para que possa aproveitar esse curso da melhor maneira, é muito importante já ter um conhecimento básico em manipulação e visualização de dados com as bibliotecas do Python, como Pandas, NumPy, Matplotlib e Seaborn. E conhecer um pouco de uma das bibliotecas mais utilizadas na área de Machine Learning: Scikit-Learn.
Com as expectativas alinhadas, vamos começar o nosso projeto?
Você é uma pessoa cientista de dados que trabalha com imobiliária, visando criar modelos que estimem preços de casas de acordo com algumas características, auxiliando o time de vendas a negociá-los com os clientes.
Para isso, vamos focar em um projeto que consiga tanto avaliar a partir da precisão e trazer preços mais justos para essas casas, como também fazer um processo mais rápido e menos manual para que o time de vendas consiga utilizá-lo.
Claro que para construir esse modelo, vamos precisar trabalhar com uma base de dados.
Essa base de dados que recebemos está no formato CSV, com algumas das características e casas que já foram vendidas de acordo com essas características que vamos possuir.
Qual é o primeiro processo que vamos precisar fazer para criar esse modelo?
Quais são essas características e como elas podem influenciar no preço de uma casa?
Para responder a essas perguntas, vamos utilizar um notebook bem estruturado, com todo o passo a passo para a criação do nosso modelo.
Esse notebook já está nas nossas atividades, assim como a base de dados que vamos utilizar durante o curso.
No início do notebook, deixamos uma breve explicação sobre o que seria esse nosso projeto e os objetivos que temos na criação desse modelo, e também explicações sobre a base de dados que vamos trabalhar.
Problema de negócio:
Você, como cientista de dados de uma imobiliária, precisa criar um modelo que consiga estimar os preços de diferentes casas para que o time de vendedores e vendedoras possam negociá-las com potenciais clientes.
Para isso, vamos observar as principais características de casas que já foram vendidas de acordo com a base de dados que recebemos, analisar estes dados e construir um modelo de aprendizado de máquina (ML), averiguando sua eficácia.
Objetivo
Estimar preços dos imóveis de acordo com diversas características das propriedades, como área e localização. Para este propósito, vamos:
Identificar quais fatores contribuem para a precificação dos imóveis; Averiguar a influência das características no preço do imóvel; Diferenciar quando precisamos transformar ou não as variáveis para uma melhor resposta do modelo; Verificar a relação entre as variáveis explicativas e a variável resposta; Criar um modelo de regressão linear de múltiplas variáveis; Fazer previsões para uma ou mais casas. Base de dados:
Vamos utilizar a base precos_casa.csv adaptada de uma base bem conhecida no Kaggle chamada House Prices.
Esses dados serão lidos a partir do repositório compartilhado pelo GitHub.
Como processo inicial para realmente trabalhar com nossos dados, precisamos importar uma biblioteca que faça tanto a parte da manipulação quanto da análise exploratória dos dados.Essa biblioteca é o Pandas. Vamos executar o seguinte código:
import pandas as pd
Em seguida, vamos utilizar o processo que vai fazer a leitura desse nosso arquivo CSV.
dados = pd.read_csv('https://raw.githubusercontent.com/alura-cursos/data-science-regressao-linear/main/dados/precos_casas.csv')
Esse link que vamos colocar vem de um repositório do GitHub, o repositório do nosso próprio curso, que está disponível nas atividades do curso. Esse link vai trazer a nossa base do CSV.
Lendo agora a nossa variável dados
, vamos ver as primeiras linhas dele.
dados.head()
valor | area_primeiro_andar | existe_segundo_andar | area_quintal | dist_metro | dist_parque |
---|---|---|---|---|---|
0 | 1042500 | 79.52 | 1 | 23.86 | 1.639 |
1 | 907500 | 117.24 | 0 | 35.17 | 1.538 |
2 | 1117500 | 85.47 | 1 | 25.64 | 1.275 |
Estamos exibindo as primeiras cinco linhas com os dados e as suas respectivas colunas. Aqui na nossa base de dados, o que possuímos? Possuímos o valor, que seria o valor da casa que foi vendida, a área do primeiro andar, que seria a área do primeiro andar dessa casa vendida em metros quadrados. Existe o segundo andar, que é uma variável binária que representa 1 para uma casa que tenha segundo andar e 0 para uma casa que não possua segundo andar.
A área do quintal também vai estar em metros quadrados, que será a área do quintal da casa. E a dist_metro
e dist_parque
é a distância em quilômetros tanto do metrô quanto do parque.
Então, temos essas seis variáveis, sendo 1 o valor, que é o que queremos prever, e o restante das cinco seriam as variáveis que são as características dessa casa.
Já conseguimos ter uma noção da quantidade de colunas que temos para os nossos dados. Mas quantas casas temos aqui nessa base? Com quantos valores estamos trabalhando aqui?
Para saber isso, vamos vir aqui embaixo, na próxima linha de código, e vou colocar dados.shape
. dados.shape
vai ver a forma, ele vai trazer uma tupla, ele vai trazer a quantidade de linhas e a quantidade de colunas que temos.
dados.shape
(1460, 6)
Temos 1.460 casas em nossa base de dados, e 6 colunas (uma para valor e cinco para características).
Então, já temos uma noção de quantos dados possuímos.
Agora, vamos ver se realmente esses valores que dissemos que estavam em metros quadrados e que estavam em quilômetros, se são realmente números e não textos?
Quando vamos trabalhar com modelos, é importante que os dados estejam no formato que precisamos para alimentá-los. E os modelos que vamos trabalhar aqui, eles precisam que os dados estejam em formato ou inteiro ou float.
Então, vamos ler agora como é que estão esses dados. E também vamos verificar se existem dados nulos ou não, para saber se precisamos tratá-los.
dados.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1460 entries, 0 to 1459
Data columns (total 6 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 valor 1460 non-null int64
1 area_primeiro_andar 1460 non-null float64
2 existe_segundo_andar 1460 non-null int64
3 area_quintal 1460 non-null float64
4 dist_metro 1460 non-null float64
5 dist_parque 1460 non-null float64
dtypes: float64(4), int64(2)
memory usage: 68.6 KB
Com dados.info()
temos a representação da quantidade de linhas, da quantidade de colunas que temos, mas também temos todas as colunas bem descritas, trazendo tanto a parte das contagens de dados não nulos, quanto os tipos que temos para esses nossos dados.
Note que tem 1.460 não nulos para todos, ou seja, todos os dados estão perfeitos. Não precisamos tratar nenhum dos dados aqui, pois não temos dados nulos nem faltantes.
Além disso, sobre os tipos, temos para valor, valores inteiros, e para esse segundo andar, que falamos que era aquela variável binária, também valores inteiros.
A área e as distâncias que temos dentro do nosso projetos estão todas no formato float, que é o formato ideal para trabalhar, até porque temos em casas decimais essas variáveis.
Essa base que temos é baseada numa base que tem lá no Kaggle (plataforma de competição de ciência de dados), que é chamada "house prices". Nós só alteramos, modificando algumas colunas, alteramos também a questão das medidas, que estavam em pés quadrados para metros quadrados, que estavam valores em dólares para real, coisas desse formato, para que nos concentremos aqui apenas na parte da criação do nosso modelo e entendimento da relação entre as variáveis.
Tanto que nem vamos precisar tratar esses dados, pois eles já estão tratados previamente.
Já conseguimos observar quais são as características da base de dados.
Que tal agora começar a entender a relação entre elas. Vamos fazer isso no próximo vídeo!
Agora, precisamos entender como as características se relacionam com o preço da casa.
Vamos entender como criar essa relação entre as características e o preço. Vamos utilizar algumas ferramentas para estabelecer essa relação, o que vai facilitar para uma precificação mais justa da casa para as pessoas vendedoras passarem para a clientela.
Mas qual seria essa relação e como fazemos?
Será que, por exemplo, a área do primeiro andar consegue afetar positivamente o preço de uma casa? E qual seria a intensidade dessa relação?
Para entender a relação entre os dados dos valores da venda das casas com as suas características, vamos utilizar uma técnica estatística chamada de correlação.
Entendendo a relação dos dados
Para entender a relação dos dados entre o valor de venda dos imóveis do dataset e suas características vamos utilizar a Correlação.
Correlação é uma medida estatística que varia numa escala de -1 a 1, indicando a relação e a dependência entre duas variáveis. Existem três tipos principais de correlação:
- Correlação Positiva: quando uma variável aumenta, a outra tende a aumentar.
- Correlação Nula: não há relação linear entre as variáveis.
- Correlação Negativa: quando uma variável aumenta, a outra tende a diminuir.
Essa medida não só define a direção, como também, a intensidade da relação.
Basicamente, a correlação é um número que varia entre -1 e 1, e esse número dita o quão forte e qual a direção dessa relação entre duas variáveis.
Podemos ter relação que seja positiva, negativa ou neutra.
Vamos conseguir ver se o aumento de uma coisa pode tender ao aumento de outra, ou a diminuição, por exemplo, de um valor vai diminuir o valor da casa ou aumentar o valor da casa. Essas relações vamos entender por meio desse número.
Para conseguirmos entender como seria essa relação da correlação, vamos construir a correlação com os nossos dados.
Então, no nosso notebook, vamos executar:
corr = dados.corr().round(3)
corr
Colocamos para 3 casas decimais porque a correlação é um cálculo que pode vir com muitas casas decimais. Vamos passar isso tudo por uma variável, o que achamos legal é termos essa variável para o processo mais à frente.
Então, o que aconteceu? Apareceu uma tabela muito similar a um dataframe (quadro de dados), só que aqui chamamos isso de uma matriz.
Por que chamamos de uma matriz de correlação? Porque a matriz de correlação vai ter tanto nas suas linhas quanto nas colunas, temos as colunas e as linhas, os mesmos valores. Então, vamos ter os nomes de cada uma das variáveis em uma coluna e o nome das mesmas variáveis nas suas linhas. E a relação entre elas, esse pareamento, vai ter o número que vai estar dentro dessa matriz.
Ou seja, se temos uma correlação perfeita, que seria o mesmo valor, o valor com valor, por exemplo, vamos ter valor 1. Então, isso significa correlação perfeita.
Ou seja, se pegarmos a da área de primeiro andar e a área de primeiro andar, tanto a linha quanto a coluna, e fizermos essa relação, é 1.
Por que existe uma tendência muito forte em que quando aumentamos a área de primeiro andar, aumentamos a área de primeiro andar. Parece estranho, por quê? Porque a variável é a mesma. Então, sempre quando a variável é a mesma, essa correlação vai ser perfeita. E aí, vamos ter esses valores oscilando entre -1 e 1.
Vamos ter, por exemplo, a área de primeiro andar com valor 0,6, que seria uma correlação positiva, moderada. Ou podemos ter também correlação negativa aqui, em metro e valor. Então, conseguimos ter essa noção.
Um ponto legal que podemos ver, por exemplo, a área de primeiro andar com a área do quintal, tem uma correlação muito boa, 0,8. Então, isso aqui está mais próximo de 1. Então, aqui é uma correlação positiva forte. Então, temos essas situações.
Mas não vamos utilizar essa matriz por inteiro.
Porque estamos concentrados em criar um modelo para precificação de casas. Então, o que interessa para nós é a relação das variáveis com o valor. Então, vamos puxar apenas a coluna de valor. Então, para isso, vamos fazer o seguinte:
# Correlação do preço de venda
corr["valor"].to_frame()
Valor | |
---|---|
valor | 1.000 |
area_primeiro_andar | 0.606 |
existe_segundo_andar | 0.138 |
area_quintal | 0.614 |
dist_metro | -0.644 |
dist_parque | -0.071 |
Então, temos aqui formatação. São realmente os dados que mais importam para criarmos as nossas relações.
Vamos entender cada uma delas aqui? Então, vamos ter a questão de relações positivas, fortes ou fracas, como por exemplo, o valor e a área de primeiro andar, que já falamos previamente, temos uma variação positiva moderada para forte, que é 0,6.
Em contrapartida, no exemplo de segundo andar, temos uma relação que é positiva, porque o sinal ainda é positivo, mas ela é fraca, porque é 0,138.
Ou seja, talvez a área de primeiro andar seja mais importante para o valor do que a área de segundo andar, se for considerado, claro, separadamente.
Já outra forma também de visualizarmos, não só agora a intensidade, mas também a direção, temos, por exemplo, a área de primeiro andar, que era positiva, e a área da distância do metrô, que é negativa, temos uma relação de menos 0,644. O que seria isso?
Seria dizer que quanto mais distante do metrô, a tendência é que a casa seja mais barata. E quanto maior a área, a tendência é que o preço seja mais alto. Note como a relação é inversa de um para o outro.
Então, essa variável de correlação traz bem explicado essa questão de quais variáveis influenciam ou não no preço da casa, e como é a intensidade da relação.
Já vimos algumas relações utilizando a correlação, e uma delas que nos chamou bastante atenção é que a área do primeiro andar é moderadamente positiva em relação ao valor.
Será que tem alguma forma de analisarmos com mais detalhes essa relação? Vamos descobrir no próximo vídeo.
O curso Data Science: transformando variáveis para uma Regressão Linear possui 140 minutos de vídeos, em um total de 53 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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.