Scikit Learn: Projetando o futuro de suas APIs e aplicativos usando machine learning

O FutureCast é um script em Python que utiliza regressão linear do Scikit-Learn para projetar valores futuros de APIs e aplicativos a partir de um banco de dados SQLite, permitindo uma melhor tomada de decisões e planejamento de operações.

[ Hits: 3.386 ]

Por: Leonardo Berbert Gomes em 16/04/2023 | Blog: https://www.linkedin.com/in/leoberbert


Introdução



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.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Projetando dados futuros
   3. Validação dos dados
   4. Visualização dos Dados
Outros artigos deste autor

Monitoramento de Comunicação - Blackbox Exporter(ICMP) + Prometheus + Grafana

Centralizando logs com Promtail + Loki + Grafana

Crie um bot para Telegram e gerencie a escala de plantonistas

Rundeck - Um Poderoso Agendador de Tarefas

SuperDNS: Solução definitiva para DNS dinâmico

Leitura recomendada

Port Scanner com Python

Breve Estudo Sobre Ransomwares e Análise Estática/Dinâmica do WannaCry

rwd - Restart When Down

Construindo um portscanner TCP com Python

Gerar senhas seguras com Python

  
Comentários
[1] Comentário enviado por taracena em 29/04/2023 - 03:35h


Thanks for the information.. https://www.caregiverconnect.net/

[2] Comentário enviado por maurixnovatrento em 14/05/2023 - 20:47h


Bom artigo.

___________________________________________________________
Conhecimento não se Leva para o Túmulo.
https://github.com/mxnt10


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts