Alura > Cursos de Dados > Cursos de Machine Learning & Deep Learning > Conteúdos de Machine Learning & Deep Learning > Primeiras aulas do curso Regressão: avançando em modelos regressivos

Regressão: avançando em modelos regressivos

Introdução aos Modelos Regressivos - Apresentação

Apresentando a instrutora e o objetivo do curso

Olá! Meu nome é Mariana, sou engenheira de Machine Learning (Aprendizado de Máquina), professora e instrutora aqui na Alura, e apaixonada pelo mundo da ciência de dados. Eu estarei com vocês ao longo deste curso de regressão avançada com modelos regressivos.

Mas, afinal, o que vamos aprender neste curso? Se já existe um curso de regressão na plataforma, por que outro curso de regressão? Nós vamos construir um pipeline (fluxo de processamento) completo de regressão aplicado a um problema real de previsão. Para isso, utilizaremos uma categoria diferente de algoritmos, capazes de identificar relações não lineares em nossos dados. Vamos esclarecer o que isso significa ao longo das aulas.

Neste curso, nós vamos:

Contextualizando com o problema de negócio

Como de costume, não aprenderemos os algoritmos de qualquer maneira. Nós aprenderemos os algoritmos para resolver um problema de negócio.

Qual é esse problema? Vamos lá. UrbanMove é uma empresa de mobilidade urbana especializada em bicicletas compartilhadas. Ela enfrenta a dificuldade de equilibrar a distribuição da frota pela cidade. A empresa possui mecanismos para monitorar o uso das bicicletas em tempo real, mas percebeu que a distribuição da frota ocorre de forma muito reativa. Em horários de pico, algumas estações ficam sem bicicletas rapidamente, enquanto, em outros horários, há áreas com bicicletas ociosas. Isso é ruim porque aumenta os custos logísticos e reduz a eficiência operacional da empresa.

Para melhorar esse cenário, surgiu a ideia de utilizar dados históricos da própria empresa para prever, com antecedência, a demanda por bicicletas compartilhadas. A proposta é compreender como diferentes fatores — como horário, temperatura, chuva, sazonalidade e comportamento urbano — impactam a quantidade de aluguéis de bicicletas, possibilitando um planejamento mais estratégico e uma melhor distribuição das frotas. Assim, chegamos ao nosso problema de negócio: como prever, de forma precisa e antecipada, a demanda por bicicletas compartilhadas?

Questionando o uso de modelos lineares

Surge então a pergunta: por que utilizar outros modelos de regressão? Por que não usar o modelo de regressão linear, que já aprendemos aqui? Quando falamos de demanda, há uma série de fatores que a influenciam, como chuva, temperatura, horário, mês do ano, fim de semana ou não, tráfego e comportamento urbano. Há muitas variáveis que impactam essa demanda. O ponto é: essas relações não são, necessariamente, lineares.

Como assim? Vamos pensar no problema de prever o aluguel de um apartamento. Vamos delimitar bem o escopo.

Demonstrando uma relação linear com exemplo de aluguel

No bairro Jardim existe um condomínio chamado C, e queremos construir um modelo para prever o preço do aluguel nesse condomínio C. Identificamos que a quantidade de quartos tem relação direta com o preço do aluguel: cada quarto aumenta o valor em R$ 250. Assim:

Ou seja, se aumentamos a quantidade de quartos, aumentamos o aluguel em R$ 250; se diminuímos a quantidade de quartos, reduzimos o preço em R$ 250. Quando isso ocorre, chamamos de relação linear. Utilizamos modelos que podem capturar essas relações lineares, como o modelo de regressão linear que já aprendemos na Alura.

Explorando relações não lineares e interações complexas

Porém, em alguns problemas do mundo real, como a demanda por bicicletas, lidamos com relações complexas, e nem tudo segue uma linha reta. Vejamos um exemplo: em um gráfico, no eixo x temos a temperatura e, no eixo y, a demanda. Em temperaturas mais agradáveis, a demanda tende a subir. Por exemplo, entre 20 °C e 25 °C, temperaturas mais confortáveis, observamos aumento da demanda. Existe uma faixa ideal em que a temperatura se mantém agradável, mas, quando a temperatura cai muito, por exemplo para 5 °C ou 8 °C, a demanda tende a diminuir. Ao mesmo tempo, se a temperatura sobe demais, por exemplo para 40 °C ou 45 °C, a demanda também cai. Portanto, não temos uma linha reta; temos uma curva, isto é, uma relação não linear. Há um ponto ótimo, mas a relação não é linear.

Modelos lineares possuem essa limitação: não conseguem lidar com esse tipo de relação e não conseguem capturar interações complexas, isto é, várias variáveis que se influenciam mutuamente. Por exemplo, no horário de pico ao meio-dia, em um dia sem chuva e com temperatura agradável (28 °C), teremos demanda alta. Mas o horário de pico em um dia chuvoso faz a demanda diminuir. Assim, o horário de pico junto com a temperatura gera interações complexas. Além disso, existem padrões locais, de modo que o comportamento muda conforme o contexto e a região considerada. Há também a sazonalidade por dia da semana: de segunda a sexta teremos certa demanda, e nos fins de semana haverá alteração.

Introduzindo modelos de árvores e convidando para a próxima aula

Dessa forma, o modelo linear não consegue capturar essas relações. Precisamos recorrer a outros modelos mais flexíveis que lidem melhor com essas situações. Existe uma categoria de métodos — os modelos baseados em árvores e os ensembles — que tendem a captar esses padrões de forma mais eficaz. Por isso, neste curso conheceremos esses métodos.

Tendo compreendido que precisamos de modelos baseados em árvores para capturar relações mais complexas, vamos nos aprofundar. Como são essas relações não lineares? Por que os modelos baseados em árvores são ideais? Como funcionam? Veremos tudo isso na próxima aula.

Te espero lá!

Introdução aos Modelos Regressivos - Explorando algoritmos baseados em árvores

Apresentando o objetivo e relembrando o problema

Olá a todas as pessoas! Como estão? Bem-vindas e bem-vindos ao nosso segundo vídeo da Aula 1, no qual vamos aprofundar as relações não lineares e conhecer a classe de algoritmos baseados em árvores.

Vamos relembrar nosso problema de negócio, porque toda a explicação estará baseada nele: como prever, de forma precisa e antecipada, a demanda de bicicletas compartilhadas.

Explorando a complexidade da demanda e visualizando no gráfico

Pelo vídeo anterior, já sabemos que não é possível captar a relação necessária para a previsão da demanda apenas com modelos como a regressão linear, que só conseguem capturar relações lineares nos dados. A demanda depende de diversos fatores, e pequenas mudanças podem impactá-la, aumentando ou diminuindo seu valor. Por exemplo, chuva: com chuva, há menos pessoas nas ruas e menos bicicletas em uso.

Ao mesmo tempo, em horários de pico, tende a existir um aumento da demanda por bicicletas compartilhadas, porque as pessoas pegam suas bicicletas para voltar para casa depois da escola, depois do trabalho ou para se deslocar até a escola, o trabalho ou a universidade. Em horários de pico, portanto, esperamos aumento da demanda. Contudo, mesmo no pico, se estiver chovendo, pode ser 13h e, ainda assim, haverá menos pessoas nas ruas, resultando em menor demanda. Observamos, então, uma relação mais complexa.

Podemos visualizar isso no gráfico. No eixo x, temos a hora do dia; no eixo y, a demanda. Consideramos um dia sem chuva. Em verde, de 0 até aproximadamente 15h, vemos um comportamento considerado normal da demanda para um dia sem chuva. À medida que se aproxima o horário de pico, há aumento da demanda. Porém, por volta das 15h, começou a chover, o que provocou uma queda brusca na demanda. Pequenas mudanças no clima podem gerar grandes impactos. Temos, portanto, uma relação complexa em que várias variáveis influenciam diretamente a quantidade demandada, de modo que modelos lineares não conseguem capturá-la.

Explicando as limitações dos modelos lineares

Modelos lineares possuem uma limitação: tentam fazer a previsão ajustando uma linha reta. Quando falamos de temperatura e demanda de bicicletas, por exemplo, o modelo tentará ajustar uma reta. Esse ajuste subestimará a demanda em temperaturas moderadas e, quando as temperaturas forem mais altas, a superestimará. Assim, o modelo não captará o comportamento real dos dados, porque o comportamento não é linear. Não é verdade que, ao aumentar a temperatura, a demanda aumentará necessariamente; ao diminuir a temperatura, a demanda não diminuirá necessariamente. Podemos aumentar demais a temperatura e ver a demanda cair. Por isso, precisamos de outros algoritmos.

Olhando para o gráfico à direita (tendo o modelo linear à esquerda), vemos um modelo capaz de capturar a relação não linear e, assim, identificar o padrão real. Esses modelos tendem a ser mais flexíveis, pois identificam relações complexas. Por exemplo, entre 10 °C e 30 °C, pode haver aumento da demanda; porém, entre 15 °C e 20 °C, ou entre 20 °C e 25 °C, existe uma região ótima de aumento. Se a temperatura subir demais, por exemplo até 40 °C, ocorre diminuição da demanda. De forma semelhante, entre 0 °C e 10 °C também há diminuição por causa do frio. Quando está muito frio, ninguém quer sair de bicicleta; quando está muito quente, também é complicado pedalar. Temperaturas moderadas tendem a favorecer a demanda. Ao escolhermos o algoritmo correto, conseguimos identificar esse padrão.

Introduzindo algoritmos de árvores e regras locais

É nesse ponto que entram os algoritmos de regressão baseados em árvores. Por que são ideais para esse cenário de demanda? Porque algoritmos em árvores aprendem padrões locais. Como funcionam? Dividem o espaço — isto é, nossas variáveis — em regiões menores. Em vez de aprender uma única relação global entre todas as variáveis e o alvo que queremos prever, aprendem regras locais.

Na imagem, temos um exemplo de árvore. A primeira regra: hora > 17? Se a resposta for sim, verificamos outra condição lógica: temperatura > 20? Se a resposta for sim, fazemos outra pergunta: não está chovendo? Se a resposta for não, a demanda é alta; se sim, a demanda é média. Voltando ao nó “temperatura > 20”: se a resposta for não, a demanda é baixa.

Retomando a primeira regra, “hora > 17?”: se a resposta for não, fazemos outra pergunta: está chovendo? Se sim, a demanda é baixa; se não, a demanda é média.

Temos, assim, um conjunto de regras locais. Essas regras dividem nossos dados em regiões menores, permitindo capturar diferentes relações entre a variável de demanda e as demais variáveis — outros fatores como hora, temperatura e chuva. Desse modo, conseguimos representar melhor comportamentos não lineares e melhorar a precisão das previsões de demanda de bicicletas compartilhadas.

Quando falamos de um algoritmo de árvore, cada caminho representa uma regra que descreve um grupo de situações. Isso é muito importante, porque não vamos tratar apenas o comportamento global, mas também comportamentos locais, o que conduz a decisões mais precisas. Em problemas de regressão, quando há relações não lineares, os algoritmos de árvores são uma boa opção por sua capacidade de aprender localmente.

Visualizando a divisão do espaço de características

Como a árvore verá os dados? Consideremos um gráfico no qual o eixo x representa a hora do dia e o eixo y a temperatura. A árvore dividirá o espaço de características em regiões e, dentro de cada região, os dados serão mais parecidos. Por exemplo, entre 0 e 6 da manhã, se a temperatura estiver entre -5 e 15, teremos demanda baixa. Já ao redor do meio-dia, se a temperatura estiver entre 25 e 35, teremos demanda média. Teremos, por exemplo, manhã com chuva, manhã sem chuva, tarde sem chuva, tarde com chuva, noite com chuva, noite sem chuva, noite e tarde frias, manhã e tarde frias. Teremos várias regiões. Dependendo de cada região, a demanda será diferente. Essa divisão criará grupos homogêneos.

Quando falamos de árvores, o modelo divide o espaço de características e pode aprender padrões locais. Com isso, captura as relações entre variáveis e melhora a previsão em diferentes cenários, porque uma manhã com chuva é diferente de uma manhã sem chuva. Um meio-dia sem chuva é diferente de um meio-dia com chuva. E um dia sem chuva, mas frio, será diferente de um dia sem chuva, porém quente. As árvores conseguem enxergar esses cenários distintos.

Definindo sobreajuste, subajuste, viés e variância

Dentro desse contexto, há alguns conceitos importantes que devemos aprender desde agora, porque ao longo do curso vamos utilizá-los com frequência. Ao trabalhar com árvores, temos a capacidade de lidar com modelos flexíveis. Porém, esses modelos precisam estar equilibrados; não podem ser excessivamente flexíveis. Diante disso, há vários conceitos.

O primeiro é o sobreajuste. O sobreajuste ocorre quando o modelo é tão flexível que memoriza os dados, aprendendo padrões muito específicos do conjunto de treinamento, inclusive o ruído. Assim, no treinamento, o desempenho será excelente, mas, quando introduzirmos os dados de teste — ou seja, dados que o modelo não conhece —, o desempenho será muito ruim. O modelo sofre de sobreajuste.

Em seguida, temos o subajuste, que ocorre quando simplificamos demais. O modelo é muito simples para capturar as relações presentes nos dados e, portanto, terá desempenho ruim tanto no treinamento quanto no teste.

Além disso, há outros dois conceitos que também devemos conhecer. O primeiro é o viés, que descreve um modelo rígido, quando o modelo faz suposições muito fortes sobre os dados. Um viés alto levará ao subajuste, isto é, um modelo que simplifica em excesso. Também temos a variância, que ocorre quando o modelo é muito sensível e muda muito diante de pequenas alterações nos dados. Uma variância alta conduz ao sobreajuste.

Ao construir um modelo baseado em árvores, devemos alcançar um equilíbrio. O modelo não pode ter viés alto — ser muito simples —, sob pena de apresentar subajuste; ao mesmo tempo, não pode ser excessivamente complexo, pois, se for muito complexo, apresentará variância alta. Com variância alta, aprenderá em excesso e acabará memorizando os dados. Por isso, precisamos de equilíbrio: um modelo que generalize melhor, com bom equilíbrio entre viés e variância. Um modelo que generalize bem.

Esses conceitos são muito importantes quando trabalhamos com algoritmos mais flexíveis, como os modelos em árvore. Não precisamos nos preocupar agora, pois falaremos bastante sobre esses conceitos nas próximas aulas. Este panorama serve para fornecer uma visão intuitiva dos dados.

Ilustrando subajuste e sobreajuste e motivando métodos ensemble

Na primeira situação, temos subajuste, isto é, um modelo excessivamente simples. Observamos que os dados reais são os pontos brancos, e o modelo é representado por uma reta muito simples, que não captura bem os dados. Já na quarta situação, temos um modelo de alta variância. Ali, o modelo — representado pela linha azul — aprendeu até o ruído dos dados. As curvas se ajustam exatamente às extremidades dos pontos, o que significa erro baixo no treinamento, mas erro muito alto com dados novos.

O objetivo é alcançar um bom equilíbrio: um modelo que capture bem o padrão real e que generalize adequadamente. Os modelos baseados em árvores e os métodos ensemble (conjunto), como veremos com mais detalhes, ajudam-nos a atingir esse equilíbrio com maior facilidade. Essa é a grande motivação para utilizar modelos baseados em árvores nesse tipo de problema de regressão.

Encerrando e apresentando próximos passos

Com isso em mente, e entendendo por que conheceremos esses modelos baseados em árvores, passaremos agora a conhecer nossos dados. Quais dados utilizaremos para resolver nosso problema? Faremos análise exploratória de dados, isto é, EDA, realizaremos engenharia de características e toda a preparação dos dados para, então, conhecer nossos algoritmos.

Nos encontramos na próxima aula. Até mais!

Preparação dos Dados, EDA e Engenharia de Atributos - Carregando dados no Google Colab

Apresentando a aula e definindo as etapas

Olá, pessoal! Como estão? Boas-vindas à nossa Aula 2, na qual vamos estabelecer as bases para a construção dos nossos modelos. Qual é essa base? Trabalhar os nossos dados. Sem dados bem trabalhados, não teremos bons modelos.

Nesta Aula 2, teremos três pontos principais. O primeiro é a Análise Exploratória de Dados, pois precisamos conhecer os nossos dados: qual é o nosso conjunto de dados, quais são as características das colunas e qual é a nossa variável-alvo. Essa etapa é chamada de EDA (Análise Exploratória de Dados).

A segunda etapa é a Engenharia de Atributos, que parte do nosso conjunto de dados e das colunas conhecidas na EDA para gerar novos atributos com o objetivo de explicar melhor o fenômeno associado à nossa variável-alvo, isto é, a variável que desejamos prever.

Depois disso, realizaremos a etapa de preparação de dados, que consiste em identificar as variáveis categóricas que precisam ser codificadas e, em geral, deixar os dados prontos para alimentar os nossos algoritmos e possibilitar a geração de modelos de alto desempenho.

Esta aula terá esse foco e será dividida em vários vídeos. Neste primeiro vídeo, vamos iniciar o nosso projeto.

Iniciando o projeto no colab e configurando bibliotecas

Vamos relembrar o nosso problema de negócio: identificar, de forma precisa e antecipada, a demanda por bicicletas compartilhadas. Para resolver esse problema, utilizaremos modelos de regressão.

Vamos construir o projeto, inicialmente, no Google Colab, que é a plataforma do Google que permite usar notebooks (cadernos) na nuvem. Este é o notebook do nosso projeto. Na primeira célula, por organização, sempre colocamos as bibliotecas que vamos utilizar. Nesta aula, utilizaremos quatro bibliotecas básicas para manipulação de dados e EDA: pandas, NumPy, Matplotlib e Seaborn. Elas já estão carregadas.

Para fazer isso, utilizamos as importações abaixo:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

Carregando o conjunto de dados e enviando arquivos

Na segunda célula, temos o código para carregar o nosso conjunto de dados. Aqui, estamos carregando o nosso dataset (conjunto de dados) diretamente do computador local, isto é, do seu dispositivo. O nosso conjunto de dados já foi carregado.

No Colab, fazemos o upload do arquivo desta forma:

from google.colab import files

uploaded = files.upload()

for fn in uploaded.keys():
  print('User uploaded file "{name}" with length {length} bytes'.format(
      name=fn, length=len(uploaded[fn])))

Como fazemos isso? Pelo painel Files (Arquivos) do Google Colab. Chamamos o método de Upload (envio), aparece o botão para escolher arquivo, selecionamos o arquivo desejado — o conjunto de dados também está disponível para você. À esquerda, no Google Colab, há um menu; a penúltima opção é o Files (Arquivos). Com o conjunto de dados completamente carregado, podemos iniciar o projeto.

Utilizando o gemini para acelerar a eda e a engenharia de atributos

Qual é o diferencial aqui? Para a EDA e a Engenharia de Atributos, não vamos escrever todo o código passo a passo. Vamos usar o Gemini para agilizar. Por que o Gemini? Porque ele já está integrado ao Colab. Vamos utilizá-lo para facilitar o trabalho e, em seguida, validar as células que ele gerar e também validar as análises.

O primeiro passo é realizar a carga do nosso conjunto de dados. Para facilitar a visualização, vamos usar Ctrl + para aumentar o zoom. Para a carga, utilizamos read_csv de pandas e carregamos os dados no df. Em seguida, chamamos df.info() para obter uma visão geral dos dados. Contudo, como mencionado, não vamos fazer tudo a partir do zero: vamos utilizar o Gemini.

Carregando o CSV no DataFrame:

df = pd.read_csv("hour.csv")

Em seguida, obtendo uma visão geral das colunas, tipos e presença de valores nulos:

df.info()

Estruturando o prompt com contexto, instruções e restrições

Como fazemos isso? A partir de um prompt (instrução). Já deixamos esse prompt pré-carregado. A ideia é fornecer ao Gemini o contexto, as instruções e as restrições. Ao estruturarmos contexto, instruções e restrições, conseguimos construir prompts mais assertivos.

No nosso prompt, fornecemos o contexto: atue como pessoa cientista de dados. Queremos que a resposta seja objetiva, técnica e adequada. Todos os prompts desenvolvidos neste curso estarão disponíveis para você e, na verdade, já estão disponíveis. Indicamos que se inicie uma análise no conjunto de dados que será utilizado para o problema de regressão para prever a demanda de bicicletas compartilhadas. Solicitamos que o Gemini analise o DataFrame (quadro de dados) e elabore um relatório inicial da base.

Em seguida, detalhamos as instruções:

Também solicitamos que isso seja gerado após a seção de EDA no notebook (caderno). Indicamos explicitamente onde queremos que o conteúdo seja inserido, pois, caso contrário, ele pode ser gerado no início ou no final. Ao definirmos exatamente onde deve ser exibido, facilitamos bastante a organização.

Copiamos o prompt, entregamos ao Gemini e aguardamos a geração do código. Isso pode levar algum tempo, pois fornecemos três instruções, mas ele gerará tudo corretamente, e então aguardamos o resultado.

Validando a visão geral e a estrutura do dataset

As células foram geradas a partir do prompt enviado ao Gemini e agora vamos analisar e validar a solução. A primeira instrução trata da visão geral do conjunto de dados. Após executarmos a célula, o Gemini informa que o conjunto de dados contém informações horárias sobre o sistema de bicicletas compartilhadas dos anos de 2011 e 2012.

O objetivo é prever a demanda total de bicicletas, que neste caso é a variável cnt, com base em características ambientais e sazonais. Trata-se de um problema de regressão.

Já nos foi apresentada a situação: temos 17.379 linhas e 17 colunas. Vamos à inspeção inicial. Vamos executar o info. Sabemos que o info mostra a quantidade de colunas e seus tipos; para confirmar se a contagem está correta, vamos avaliar o que ele indica sobre as variáveis. Temos variáveis numéricas; uma variável temporal, dteday, que está como objeto e precisará ser convertida para datetime para análises temporais; e algumas variáveis categóricas e binárias. Muitas variáveis estão em int64, mas na prática representam categorias ou variáveis binárias. Isso é positivo porque significa que não teremos trabalho de codificação adicional. Não precisaremos transformar variáveis em texto nem converter objetos para inteiros. Não precisaremos codificar categorias agora, pois isso já está contemplado na estrutura do conjunto de dados. A nossa variável objetivo é cnt, que representa o total de aluguéis, uma variável numérica que será prevista.

Inspecionando amostras iniciais e possíveis vazamentos

Ao consultar o head, veremos as primeiras linhas, o que fornece algumas percepções iniciais. São exibidas as 5 primeiras horas do dia 01/01/2011: 0, 1, 2, 3, 4. Observamos, por exemplo, que na 1ª hora o valor foi 16; na 2ª hora, 32; e na 5ª hora houve apenas uma bicicleta alugada. Temos também temp e atemp, hum e windspeed, todos valores normalizados. Variáveis como season, hr e emf aparecem com códigos numéricos, confirmando sua natureza categórica ou binária.

Para visualizar as primeiras linhas no notebook, executamos:

display(df.head())

Verificamos ainda que cnt é a soma de casual e registered. Isso é relevante, pois cnt está diretamente relacionado a essas duas variáveis, o que indica correlação muito alta. É possível que venhamos a excluir casual e registered do processo de predição para evitar vazamento de informação. Não vamos retirar apenas cnt da lista de preditoras; também precisamos considerar casual e registered, pois todas elas estão presentes no conjunto de dados.

Explorando estatísticas descritivas das variáveis contínuas

Por fim, executamos o describe, que apresenta estatísticas descritivas. Faremos um ajuste usando o parâmetro include, e vamos aplicá-lo separadamente para reduzir a quantidade de variáveis listadas. O include permite indicar quais variáveis farão parte das estatísticas descritivas; portanto, incluímos apenas os tipos float. Assim, focamos em temp, atemp, hum e windspeed.

Primeiro, as estatísticas descritivas padrão:

display(df.describe())

Em seguida, focamos apenas nas variáveis contínuas (float):

display(df.describe(include=['float64']))

Consultando a documentação das variáveis e inferindo influências

Antes de analisar as estatísticas descritivas, vamos consultar a documentação das variáveis. Nela, constam as colunas, seus significados, tipos e a possível influência na demanda. Temos:

Para a situação climática (weathersit), há o significado de cada código, como: céu claro, neblina, chuva leve, chuva forte e neve. Essas definições são importantes para apoiar o nosso processo de análise exploratória. Também há uma coluna com a possível influência de cada variável na demanda, como variações sazonais e eventos específicos ao longo do tempo. A demanda tende a ser maior em estações mais quentes e menor no inverno. Observamos ainda tendência anual, variações mensais (por exemplo, meses de férias podem aumentar ou reduzir a demanda), além de picos nas horas de maior movimento e reduções em horários de menor movimento. Em feriados, a demanda pode variar, assim como conforme o dia da semana. Essas possíveis influências nos ajudarão a construir hipóteses — perguntas ou afirmações que levantamos sobre os dados e que validaremos empiricamente. As hipóteses servem para aprofundarmos nosso conhecimento sobre os dados e suas características.

Com a documentação compreendida, voltamos às estatísticas descritivas. Para atemp, a média é 0,47; para temp, 0,49; para hum, 0,62; e para windspeed, 0,19. O desvio padrão é 0,12. O valor máximo de windspeed é 0,85; de hum, 1; e o mínimo é 0. Assim, tanto a sensação térmica (atemp) quanto a umidade (hum) variam de 0 a 1. As estatísticas descritivas facilitam o entendimento das distribuições. O mesmo raciocínio pode ser aplicado às variáveis inteiras, lembrando que muitas delas são, na verdade, categóricas. Por isso, priorizamos a análise das variáveis contínuas (float) neste momento, para observar algumas características do conjunto de dados.

Aprofundando a análise com hipóteses e visualizações

Realizamos todo esse diagnóstico inicial sem escrever nenhuma linha de código: apenas construímos um bom prompt em prompt (comando de instrução) e o entregamos ao Gemini.

O próximo passo é formular hipóteses a partir desses dados — aproximadamente quatro ou cinco hipóteses — e construir gráficos que nos ajudem a respondê-las. Exemplos: como a temperatura influencia a demanda? Como a estação do ano influencia a demanda? Testaremos essas hipóteses por meio de visualizações. Mais uma vez, não faremos isso do zero: entregaremos as hipóteses ao Gemini e o Gemini construirá os gráficos correspondentes. Isso facilita o dia a dia na área de ciência de dados.

Encerrando o vídeo e preparando a próxima parte

Neste vídeo, conhecemos os dados e conduzimos a inspeção inicial. Agora, passaremos para a segunda parte da nossa Aula 2, dedicada à construção e à verificação — ou não — de nossas hipóteses.

Nos vemos no próximo vídeo.

Sobre o curso Regressão: avançando em modelos regressivos

O curso Regressão: avançando em modelos regressivos possui 201 minutos de vídeos, em um total de 46 atividades. Gostou? Conheça nossos outros cursos de Machine Learning & Deep Learning em Dados, ou leia nossos artigos de Dados.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Machine Learning & Deep Learning acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas