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: 2.927 ]

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

Solucionando problemas no sistema de arquivos

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

Crie um bot para Telegram e gerencie a escala de plantonistas

Rundeck - Um Poderoso Agendador de Tarefas

Detectando vulnerabilidades com o Nessus

Leitura recomendada

Interagindo com servidores HTTP com Python

PEP 8 - Guia de estilo para código Python

Crie um bot para Telegram e gerencie a escala de plantonistas

paramiko - Python + SSH

Reconhecimento de placas de veículos com OpenALPR

  
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