A previsão de dados futuros é uma tarefa importante em muitos campos, desde finanças e economia até ciência de dados e inteligência artificial. No mundo das APIs e aplicativos, a projeção de valores futuros pode ajudar as empresas a planejar melhor suas operações, aprimorar a tomada de decisões e garantir a qualidade do serviço. Neste contexto, o uso de algoritmos de aprendizado de máquina se tornou cada vez mais comum para fazer projeções precisas e eficientes.
Neste artigo, vamos apresentar o "FutureCast", um script em Python que realiza a projeção de valores futuros para APIs e aplicativos, utilizando um modelo de regressão linear do pacote Scikit-Learn. O script consulta um banco de dados SQLite onde os dados de transações das APIs e aplicativos são armazenados, agrupa esses dados por API, aplicativo, dia da semana e hora do dia e ajusta um modelo de regressão linear para cada API e aplicativo, projetando valores futuros para cada API e aplicativo em cada hora do dia, considerando o dia da semana atual. Em seguida, ele insere as projeções na tabela api_projection do banco de dados.
Com este script, é possível obter projeções precisas e atualizadas dos valores futuros das suas APIs e aplicativos, permitindo que você tome decisões informadas e melhor planeje suas operações. Se você está procurando uma maneira de aprimorar suas projeções de dados futuros, o FutureCast pode ser a solução que você estava procurando. Então chega de enrolação e vamos colocar a mão na massa.
Pré Requisitos
- Python 3.8 ou ou superior
- Pandas 1.0.0 ou superior
- Scikit-Learn 0.22.0 ou superior
- SQLite 3.32.3 ou superior
Para instalar as dependências do Python, você pode utilizar o gerenciador de pacotes pip. Basta executar os seguintes comandos em um terminal:
pip install pandas
pip install scikit-learn
Para verificar se o SQLite está instalado em seu sistema, você pode digitar "sqlite3" no terminal. Se o comando for reconhecido e você for levado para o prompt do SQLite, o SQLite está instalado. Caso contrário, você pode instalar o SQLite de acordo com as instruções do seu sistema operacional.
O banco de dados SQLite deve ser criado e conter uma tabela chamada "api_summary" com os seguintes campos: data (texto), application (texto), api (texto) e total (inteiro). A tabela deve conter dados históricos de transações de APIs e aplicativos, para que o FutureCast possa fazer a projeção de valores futuros.
Esse bloco de código executa uma inserção de dados em um banco de dados SQLite, na tabela chamada "api_summary". Primeiro, é estabelecida uma conexão com o banco de dados. Em seguida, é definida a data inicial como a data atual, e gerado um intervalo de 30 dias a partir dessa data, com um loop para percorrer cada dia desse intervalo e cada hora do dia. Para cada hora, é gerado um valor aleatório entre 1000 e 10000 para o campo "total". Por fim, esses dados são inseridos na tabela "api_summary".
Após a inserção de todos os dados, as alterações são confirmadas (comitadas) e a conexão com o banco de dados é fechada. O objetivo desse bloco de código é gerar dados aleatórios para a tabela "api_summary", de modo que o script FutureCast possa fazer a projeção de valores futuros para as APIs e aplicativos a partir desses dados históricos.
Código fonte:
import sqlite3
import pandas as pd
import random
from datetime import datetime, timedelta
# conectando ao banco de dados
conn = sqlite3.connect('api_data.db')
# criando cursor
cur = conn.cursor()
# definindo data inicial como 30 dias atrás da data atual
data_atual = datetime.now().replace(hour=0, minute=0, second=0, microsecond=0)
data_inicial = data_atual - timedelta(days=29)
# gerando intervalo de datas dos últimos 30 dias
intervalo_datas = pd.date_range(data_inicial, data_atual, freq='H')
# loop para gerar e inserir dados na tabela api_summary
for data_hora_atual in intervalo_datas:
# gerando valor aleatório para o campo total
total = random.randint(1000, 10000)
# inserindo dados na tabela api_summary
cur.execute("INSERT INTO api_summary (data, application, api, total) VALUES (?, ?, ?, ?)", (data_hora_atual.strftime('%Y-%m-%d %H:%M:%S'), 'vivaolinux', '/artigos/v1', total))
# commitando alterações
conn.commit()
# fechando conexão
conn.close()
Se quiser inserir dados de outras APIs ou aplicativos na tabela "api_summary", você deve alterar o bloco abaixo:
cur.execute("INSERT INTO api_summary (data, application, api, total) VALUES (?, ?, ?, ?)", (data_hora_atual.strftime('%Y-%m-%d %H:%M'), 'vivaolinux', '/artigos/v1', total))
No comando "INSERT INTO", a primeira coluna especificada é "data", seguida por "application", "api" e "total". Se o usuário desejar inserir dados de outras APIs ou aplicativos, ele deve substituir "vivaolinux" pela aplicação desejada e "/artigos/v1" pela API desejada, e certificar-se de que as colunas "data" e "total" estejam com os valores corretos. Por exemplo:
cur.execute("INSERT INTO api_summary (data, application, api, total) VALUES (?, ?, ?, ?)", (data_hora_atual.strftime('%Y-%m-%d %H:%M'), 'meuapp', '/api/v2', total))
Nesse exemplo, a aplicação é "meuapp" e a API é "/api/v2". O valor de "total" ainda é gerado aleatoriamente entre 1000 e 10000. É importante lembrar que, ao adicionar novas APIs ou aplicativos, é necessário ajustar o script FutureCast para considerar esses novos dados em suas projeções.
Agora que temos os dados, iremos fazer a projeção.