Alura > Cursos de Data Science > Cursos de Estatística > Conteúdos de Estatística > Primeiras aulas do curso Regressão linear: testando relações e prevendo resultados

Regressão linear: testando relações e prevendo resultados

Análises preliminares - Introdução

Olá, boas-vindas!

Sou Rodrigo e serei seu instrutor neste curso de Data Science, em que aprenderemos uma técnica de machine learning conhecida por Regressão Linear. Trata-se de um modelo de aprendizagem do tipo supervisionado.

Criamos um notebook que nos guiará como um roteiro, e nós iremos preenchendo as células ao longo do curso. Aprenderemos a fazer análises preliminares dos dados, análises gráficas, utilizaremos técnicas de data sciente como separação de dados e conjunto de treino e de teste. Criaremos, ainda, algumas métricas para comparar os modelos. Em seguida, iremos interpretar os resultados dos modelos e realizar previsões a partir dos dados que obtemos.

Espero que você aproveite bastante!

Vamos lá?

Análises preliminares - Conhecendo o dataset

Daremos inicio ao nosso projeto utilizando a regressão linear. O objetivo desta primeira aula é nos familiarizarmos com o dataset que utilizaremos ao longo do curso. É importante que conheçamos a estrutura de pastas que criamos, e você deve fazer o download de todas elas que estão disponíveis no tópico "Projeto Inicial do Treinamento".

O documento do projeto foi armazenado em "C:\Usuários\Alura\data-science". Em "data-science" encontraremos "reg-linear", que armazena as patas criadas do projeto. Na pasta "Dados" teremos o dataset Consumo_cerveja.csv. Ainda em "data-science" teremos a pasta "projeto", em que encontraremos o notebook Regressão Linear.ipynb.

Na pasta "data-science", teremos o arquivo "StartJupyter". Clicaremos sobre ele para iniciar a ferramenta. O Jupyter já será executado na pasta que estamos trabalhando. Por fim, clicaremos sobre "Projeto" e abriremos o notebook Regressão Linear.

Ele estará inteiramente documentado, apenas as células vazias serão preenchidas, e já contém todas as aulas que desenvolveremos ao longo do treinamento. Começaremos importando as bibliotecas básicas.

Caso você já tenha feito o curso de Pandas, encontrará algumas similaridades. Importaremos matplotlib.pyplot com o "apelido" as plt. Depois, inseriremos a function %matplotlib inline. Alguns sistemas precisam dessa configuração para que o Jupyter consiga imprimir os gráficos. Em seguida, importaremos o Pandas e o Numpy.

import matplotlib.pyplot as plt
%matplotlib inline

import pandas as pd
import numpy as np

No notebook, temos um espaço para bibliotecas opcionais. Acessaremos o portal Kaggle, onde encontraremos uma grande quantidade de datasets voltados para data science.

Para este projeto faremos algo bem simples, com o tema consumo de cerveja. Teremos uma breve descrição do arquivo, e também uma distribuição de frequência de cada variável.

O objetivo do nosso projeto é estimar um modelo de machine usando a técnica de regressão linear, e averiguar os impactos das variações disponibilizadas no dataset, sobre o consumo de cerveja. Tentaremos estimar o consumo utilizando a regressão utilizando as variáveis apresentadas. Vamos conhecer cada uma delas:

Temos uma questão: os dados do Kaggle que iremos utilizar faz uso da , ao invés do .: por exemplo 27,3. De volta ao notebook Regressão Linear, na célula de "Leitura dos dados", importaremos o arquivo o seguinte arquivo - lembrando de especificar o separador:

dados = pd.read_csv('../Dados/Consumo_cerveja.csv', sep=';')

Assim feito, basta escrever dados na próxima célula para gerarmos a visualização da tabela, composta pelas variáveis que já conhecemos e seus respectivos valores.

dados
datatemp_mediatemp_mintemp_maxchuvafdsconsumo
001/01/201527.3023.932.50.0025461
102/01/201527.0224.533.50.0028972
203/01/201524.8222.429.90.0130814
304/01/201523.9821.528.61.2129799
405/01/201523.8221.028.30.0028900
506/01/201523.7820.130.512.2028218
607/01/201524.0019.533.70.0029732
708/01/201524.9019.532.848.6028397
809/01/201528.2021.934.04.4024886
910/01/201526.7622.134.20.0137937
1011/01/201527.6222.234.83.4136254
1112/01/201525.9621.435.40.0025743
1213/01/201525.5221.234.80.8026990
1314/01/201525.9621.334.01.6031825
1415/01/201525.8621.532.83.0025724
1516/01/201526.5022.332.72.0029938
1617/01/201528.8622.035.80.0137690
1718/01/201528.2623.435.60.0130524
1819/01/201528.2222.736.53.7029265
1920/01/201527.6823.335.60.6035127
2021/01/201525.3222.730.90.0029130
2122/01/201521.7419.226.131.0025795
2223/01/201521.0418.526.13.6021784
2324/01/201523.1219.029.413.0128348
2425/01/201524.4018.130.00.0131088
2526/01/201522.4018.928.720.8021520
2627/01/201523.6020.528.71.2029972
2728/01/201525.6820.129.94.9022603
2829/01/201525.0021.529.20.0022696
2930/01/201522.8020.926.90.0026845
........................
33502/12/201522.1018.229.40.0030471
33603/12/201522.4420.226.10.0028405
33704/12/201522.7619.029.10.0029513
33805/12/201524.8019.530.60.1132451
33906/12/201523.1220.628.00.1132780
34007/12/201520.0418.023.947.8023375
34108/12/201521.7018.028.00.0027713
34209/12/201523.9619.627.90.0027137
34310/12/201524.0022.227.70.0022933
34411/12/201524.0420.730.30.0030740
34512/12/201523.9220.630.80.0129579
34613/12/201524.5419.331.012.2129188
34714/12/201526.2821.132.52.0028131
34815/12/201525.6620.632.84.0028617
34916/12/201522.0420.724.81.5021062
35017/12/201523.3218.928.70.0024337
35118/12/201526.4219.633.50.1027042
35219/12/201523.7419.831.31.3132536
35320/12/201522.8419.629.08.4130127
35421/12/201523.1219.629.127.2024834
35522/12/201524.6019.632.443.0026828
35623/12/201527.4622.132.43.0026468
35724/12/201524.7220.531.53.4031572
35825/12/201523.5817.831.039.0026308
35926/12/201523.3417.829.894.8121955
36027/12/201524.0021.128.213.6132307
36128/12/201522.6421.126.70.0026095
36229/12/201521.6820.324.110.3022309
36330/12/201521.3819.322.46.3020467
36431/12/201524.7620.229.00.0022446

Verificaremos o tamanho do nosso dataset ao escrever: dados.shape. Teremos como resultado (365,7), isto é, uma dupla numérica, em que o primeiro valor corresponde ao número de linhas de registro no dataset e o segundo ao número de variáveis.

Análises preliminares - Análises preliminares

O objetivo dessa aula é estudar a relação entre as variáveis do dataset que estamos trabalhando, além de investigar os comportamentos das variáveis com algumas estatísticas descritivas. Lembrando que caso você tenha finalizado o dataset, ele deve ser executado novamente para que os dados sejam inseridos na memória novamente.

Criaremos inicialmente uma tabela de estatísticas descritivas dos dados do dataset. Escreveremos: dados.describe().

E teremos como resposta algumas estatísticas de cada uma das variáveis que estão do dataset: média aritmética, desvio padrão, valor mínimo, 25% ou primeiro quartil dos dados, 50%, 75% e valor máximo. Iremos arredondar os dados da tabela utilizando o método round():

dados.describe().round(2)
temp_mediatemp_mintemp_maxchuvafdsconsumo
count365.00365.00365.00365.00365.00365.00
mean21.2317.4626.615.200.2825401.37
std3.182.834.3212.420.454399.14
min12.9010.6014.500.000.0014343.00
25%19.0215.3023.800.000.0022008.00
50%21.3817.9026.900.000.0024867.00
75%23.2819.6029.403.201.0028631.00
max28.8624.5036.5094.801.0037937.00

Note que em consumo - a variável que estamos interessados em estimar - possui como valor mínimo 14343.00, e o valor máximo está em torno de 37937.00. Vejamos que se trata de um limite razoável, então não temos motivo para acreditar que haja algum problema neste ponto. O mesmo ocorre para outras variáveis do dataset.

Feita essa análise mínima, podemos passar para a matriz de correlação, em que buscaremos identificar as relações lineares entre variáveis. Trata-se de uma medida de associação linear que está entre -1 e 1. Quando uma variável está "subindo", outra está "caindo", este é um exemplo de associação negativa. Já a positiva seria justamente o contrário, uma variável "sobe" e a outra acompanha essa ascendência.

Para realizar essa medição, usaremos a matriz. Para tanto, escreveremos:

dados.corr().round(4)
temp_mediatemp_mintemp_maxchuvafdsconsumo
temp_media1.00000.86280.92250.0244-0.05080.5746
temp_min0.86281.00000.67290.0986-0.05950.3925
temp_max0.92250.67291.0000-0.0493-0.04030.6427
chuva0.02440.0986-0.04931.00000.0016-0.1938
fds-0.0508-0.0595-0.04030.00161.00000.5060
consumo0.57460.39250.6427-0.19380.50601.0000

Veremos que a correlação com de consumo com a temperatura média é de 0.5746, já para temperatura mínima teremos 0.3925. Já em temperatura máxima temos uma correlação alta de 0.6427. Esses valores revelam que a variável possui uma relação linear boa com o consumo.

Ao observarmos a variável chuva, temos o valor negativo -0.1938. O que podemos interpretar deste dado? Quando chove, a tendência é que o consumo de cerveja diminua, por isso o valor negativo. Já em no caso de fds, verificamos que o consumo se eleva.

Em processo de regressão linear, teremos uma variável dependente (Y), e as variáveis auxiliares que explicarão esse consumo (X). No caso que acabamos de analisar, as variáveis temp_max e chuva podem ser classificadas como X. Um motivo para não inserirmos as outras variáveis no eixo X é porque, ao observarmos a temperatura média e a temperatura mínima, temos uma variação altíssima entre as duas, e isso não é bom para o modelo.

Sobre o curso Regressão linear: testando relações e prevendo resultados

O curso Regressão linear: testando relações e prevendo resultados possui 171 minutos de vídeos, em um total de 68 atividades. Gostou? Conheça nossos outros cursos de Estatística 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 Estatística acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas