Olá! Seja muito bem-vindo ao curso Deep Learning: Previsão com Keras da Alura, que é sobre séries temporais. Meu nome é Alan e serei seu instrutor nesse curso onde nós vamos ver como trabalhar com as séries temporais para fazer previsões do futuro.
Nós vamos começar trabalhando com essa base de dados de números de passageiros aéreos onde vamos querer prever o número de passageiros aéreos no futuro.
Veremos formas adequadas de dividir e trabalhar com essa base de dados, vamos aprender a construir uma rede neural com o que keras, trabalhando passo a passo, construindo primeiro uma regressão linear e refinando até conseguir fazer previsões melhores do que uma simples regressão linear.
Assim nós também vamos ver como que devemos passar os dados de forma adequada, de forma que o keras consiga perceber todas essas nuances presentes nos dados, e tudo isso através de um problema de regressão.
Nós não vamos trabalhar somente com a regressão - com a regressão nós já vamos conseguir um resultado bastante satisfatório - também trabalharemos com uma base de dados mais complexa onde nós utilizaremos as redes neurais recorrentes. Nelas, vamos escolher as lSTM’s, e com as lSTM’s faremos previsões bastante complexas, conseguindo prever efetivamente o futuro. Também vamos avaliar outro tipo de rede de corrente que são as GRU.
Por fim, vamos avaliar a qualidade dos resultados obtidos tanto com as lSTM’s, quanto com as GRU. É isso, eu espero ver você nos próximos vídeos do curso.
Nesse curso a nossa empresa de Data Science está prestando serviço para empresas que querem fazer um planejamento futuro, para fazer isso nós vamos começar trabalhando com uma base de dados de passageiros aéreos, queremos prever o número de passageiros aéreos no futuro.
Eu vou carregar essa base de dados no Google colab que fica no lado esquerdo na aba “Files”, assim eu consigo fazer o upload do arquivo “passageiros.csv”. Feito o carregamento desse arquivo, eu posso ler ele usando a biblioteca pandas e eu vou colocar o resultado da leitura numa variável de nome passageiros então, passageiros = pd.read_csv(‘Passageiros.csv’)
.
Para conseguir ler o arquivo, eu preciso rodar esse comando e importar a biblioteca pandas então, import pandas as pd
, “Shift + Enter” para importar biblioteca, e “Shift + Enter” para rodar o comando.
Agora eu quero visualizar as primeiras linhas do arquivo, então, passageiros.head()
. Agora sim, “Shift + Enter”, e eu tenho as primeiras linhas do arquivo, tenho na tabela criada, o tempo na primeira coluna e na segunda coluna o número de passageiros o número de passageiros variando no decorrer do tempo, quer dizer nós temos um exemplo de série temporal mostrado na tabela, outro detalhe é que na coluna do tempo tem o ano ponto vários números o que são esses números.
Se olhar aqui em detalhe eu vejo que esse ponto e vários números é uma representação dos meses: .000000 é o mês de janeiro; .083333 é o mês de fevereiro. Estou somando 0.083333 a cada mês, isso porque 1 dividido por 12 - os 12 meses do ano- é igual a 0.083333
Sabendo disso podemos tentar visualizar essa série temporal, então eu vou visualizar essa série temporal com a lineplot um plot linear da biblioteca seaborn então vou digitar na linha de código sns.lineplot(x=’tempo’,y=’passageiros’,data=passageiros,label=’dado_completo’)
. Entre parênteses eu vou colocar as informações. O X eu quero que tenha a coluna de tempo, então ‘tempo’,y=passageiros’. Eu quero no eixo Y o número de passageiros, e agora eu vou passar os dados que tem essas informações que é
data=passageiros`
Eu posso colocar também um label
, uma legenda, que vai ser dado completo
, não estou visualizando mais só 5 valor, estou visualizando dados completos.
Então tenho que importar a biblioteca seaborn e escrevo outra linha de código import seaborn as sns
, “Shift + Enter”, importei a seaborn e vou gerar o gráfico com “Shift + Enter”, gerei o gráfico, tenho a minha série temporal, mas a figura ficou um pouco pequena.
Então quero aumentar ela, e eu também quero aumentar todas as figuras no decorrer do curso, para que eu não tenha que ficar repetindo isso daqui, então eu vou importar da biblioteca matplotlib então import matplotlib as mpl
assim, eu vou passar o mpl, para o mpl eu vou passar uns parâmetros, mpl.rcParams[‘figure.figsize’] = (10, 6)
, então “Shift + Enter”, agora eu tenho os parâmetros dos tamanhos das figuras, então se eu der “Shift + Enter”, eu vou ter uma figura bem maior.
[05:08] Também quero aumentar o tamanho das letras, o tamanho da fonte do gráfico, além disso, eu tenho que passar o tamanho da fonte na linha de código que estávamos escrevendo, então vou fazer o mpl.rcParams[‘font.size’] = 22
, então “Shift + Enter” e “Shift + Enter”, agora temos uma fonte bem maior, que vai ser usada para todas as figuras daqui para frente.
Então, esse gráfico é um exemplo clássico de série temporal com tendência, temos uma tendência quase que linear no gráfico de crescimento dos passageiros, com detalhe que temos uma sazonalidade dos dados, quer dizer o número de passageiros cresce durante alguns meses e diminui durante alguns outros meses, o número pode aumentar, por exemplo, durante as férias.
E com esse gráfico, temos que pensar agora como que vamos fazer uma previsão para o futuro, como vamos prever o número de passageiros para os anos seguintes, e passar essas informações para uma rede neural.
Uma boa prática que nós podemos seguir quando trabalhamos com redes neurais, é escalar os dados. A nossa rede neural vai aprender a receber uma data e prever o número de passageiros, com base em datas passadas. Nós vamos passar uma série de exemplos para rede neural de datas passadas e números de passageiros, para que a rede entenda, desta forma, quando passarmos uma data, ela vai retornar esse número de passageiros.
É bem mais fácil para rede neural aprender a fazer isso se os dados, as datas e o número de passageiros estiverem, mais ou menos, numa mesma escala. Se os dois estiverem razoavelmente próximos de zero, fica mais fácil para a rede neural aprender a fazer esse processo.
No código, nós temos que escalar os dados, e eu vou fazer isso daí com algo chamado de StandardScaler
então eu vou criar uma linha de código, sc = StandardScaler()
, esse StandardScaler
vem da biblioteca sklearn, então from sklearn.preprocessing import StandardScaler
”Shift + Enter”, e ”Shift + Enter”, feito isso temos que fazer um ajuste nos dados para que o StandardScaler
entenda como nossos dados estão dispostos.
Então vou fazer um sc.fit(passageiros)
e “Shift + Enter” agora que eu fiz esse ajuste aos dados, eu consigo escalar efetivamente os dados. Então vou criar, dado_escalado = sc.transform(passageiros)
. Então, ”Shift + Enter”, temos nossos dados escalados. Esses dados escalados eu ainda vou dividir em x e y. O x vai entrar na rede neural e o y é o que queremos que saia da rede neural, o número de passageiros. E é comum quando trabalhamos com redes neurais chamar de x a entrada e o y a saída.
Então aqui eu vou criar o x = dado_escalado[:,0]
e eu vou também criar o y, então, y = dado_escalado[:,1]
. Passei a coluna 0 e a coluna 1 dos dados, então ”Shift + Enter”, temos o x e y, e agora eu quero gerar o gráfico. Para gerar o gráfico eu consigo fazer com a biblioteca seaborn
. Novamente, eu faço sns.lineplot(x=x,y=y,label=‘dado_escalado’)
, então, se eu der ”Shift + Enter” eu tenho meu dado no gráfico escalado. O gráfico já está em um tamanho adequado.
Vou importar a bibliotecamatplotlib também, com import matplotlib.pyplot as plt
, ”Shift + Enter”, porque eu quero adicionar o que é o eixo Y, e o que é o eixo x. Então plt.ylabel(‘Passageiros’)
e plt.xlabel(‘Data’)
, ”Shift + Enter”. Agora sim, temos no gráfico a data e o número de passageiros só que repare que as escalas agora estão diferentes, data está entre -1.5 e 1.5 e o número de passageiros mais ou menos entre -1.5 e 3, e agora os dados estão bem mais próximos, vai ser mais fácil para rede neural aprender com esses dados.
Só que, como eu disse, temos que passar parte dos dados para que a rede neural aprenda. Eu vou dividir a parte para treinar na rede neural, a parte pro treino e parte para o teste. Agora eu vou fazer essa divisão, vou primeiro pegar o tamanho que eu quero para o treino, vou criar tamanho_treino = int(len(passageiros)*0.9)
isso porque eu vou pegar 90% dos meus dados para ensinar a rede neural. Vou pegar um tamanho_teste = len(passageiros)-tamanho_treino
, então o tamanho do teste vai ser 10% que é o tamanho dos passageiros menos o tamanho do treino.
Terminado, temos o tamanho treino e o tamanho teste agora podemos dividir X e Y com base nisso. Então vou criar aqui o xtreino = x[0:tamanho_treino]
e eu também tenho ytreino = y[0:tamanho_treino]
. Agora eu tenho que repetir o processo para o teste, vou fazer o xteste = x[tamanho_treino:len(passageiros)]
então eu quero do tamanho treino até o comprimento total, pro y yteste = y[tamanho_treino:len(passageiros)]
e “Shift + Enter” temos os dados de teste também, então agora vou gerar um gráfico para os dados de treino. Então sns.lineplot(x=xtreino,y=ytreino,label=’treino’)
. Agora temos aqui os dados de treino
E vamos plotar também os dados de teste então sns.lineplot(x=xteste,y=yteste,label=’teste’)
, assim nós temos no nosso gráfico, eu posso copiar da linha de código a legenda plt.ylabel(‘Passageiros’)
e plt.xlabel(‘Data’)
com “Ctrl + C” e um “Ctrl + V” depois “Shift + Enter”, temos mostrando no eixo x a data e no eixo y o número de passageiros, e temos no gráfico os dados que vamos utilizar para ensinar a rede neural a fazer a previsão que está no fim do gráfico em laranja, queremos tentar prever essa região em laranja passando uma série de datas para a rede neural
Único detalhe no gráfico é que ele não está ligando os pontos entre a linha do gráfico em azul e a laranja, porque estamos fazendo dois plots, dois gráficos e separados. Quando geramos um único gráfico, ele liga todos os pontos que formam o gráfico, esse é o único detalhe. Agora precisamos efetivamente passar os dados e fazer a previsão com uma rede neural.
O curso Deep Learning: previsão com Keras possui 137 minutos de vídeos, em um total de 42 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.