当前位置: 首页 > article >正文

请求prometheus数据然后使用tensorflow计算正则模型

使用tensorflow 计算正则模型, 数据来源为Prometheus的数据近7天的数据, 然后计算了90%区间的上下限和当前值的概率密度

import requests
import pandas as pd
import tensorflow as tf
from datetime import datetime, timedelta

# 定义 Prometheus 查询的参数
url = "http://{your_path}/api/v1/query_range"
## 查询的QL
query = 'sum(alter_count{group="namespace"})'
start_time = int((datetime.now() - timedelta(days=7)).timestamp())
end_time = int(datetime.now().timestamp())

# 构建查询参数
params = {
    "query": query,
    "start": start_time,
    "end": end_time,
    "step": "1h"
}

# 发起 GET 请求
response = requests.get(url, params=params)

# 解析响应数据
data = response.json()['data']['result']

# 处理数据
results = []
for item in data:
    for value in item['values']:
        results.append({
            'timestamp': pd.to_datetime(value[0], unit='s'),
            'value': float(value[1])
        })
# 将数据转化为 DataFrame
df = pd.DataFrame(results)
df.set_index('timestamp', inplace=True)

# 构建 TensorFlow 模型
mean_value = tf.cast(df['value'].mean(), tf.float32)
std_dev = tf.cast(df['value'].std(), tf.float32)

# 取最后值, 也就是当前值
input_data = df.iloc[-1]['value']
input_data = tf.cast(input_data, tf.float32)  # 将输入数据转换为 float32 类型
result = tf.exp(-tf.square(input_data - mean_value) / (2 * tf.square(std_dev))) / (std_dev * tf.sqrt(2 * 3.14159))
print("当前数据 {} 的正态分布概率密度值为: {}".format(input_data.numpy(), result.numpy()))
# 计算命中 80% 区间的上下界
lower_bound = mean_value + tf.math.erfinv(-0.45) * std_dev
upper_bound = mean_value + tf.math.erfinv(0.45) * std_dev

print("命中 90% 区间的上界为: {}".format(upper_bound.numpy()))
print("命中 90% 区间的下界为: {}".format(lower_bound.numpy()))

http://www.kler.cn/news/136452.html

相关文章:

  • 苍穹外卖 将菜品缓存到Redis
  • 【永中软件-注册/登录安全分析报告】
  • 合并数组的两种常用方法比较
  • Docker 部署 EMQX 一分钟极速部署
  • Python爬虫进阶(实战篇一)
  • 【Ubuntu】Virtualbox下lamp集群分布式搭建Wordpress
  • C语言:结构体
  • vue3+vite+SQL.js 读取db3文件数据
  • 汽车标定技术--A2L格式分析
  • 解决Requests中使用httpbin服务器问题:自定义URL的实现与验证
  • sql添加索引
  • C++多线程编程:其六、unique_lock的使用
  • 【寒武纪(14)】硬件系统由标量指令、向量指令、张量指令、访存指令构成
  • BUUCTF [BJDCTF2020]一叶障目 1
  • 在服务器上部署MVC 6应用程序
  • 关于使用宝塔页面Nginx的一些注意事项:Nginx不生效情况,以及解决方案
  • 11.20 知识总结(choices参数、MVC和MTV的模式、Django与Ajax技术)
  • NameServer源码解析
  • milvus采坑一:启动服务就会挂掉
  • HashMap的详细解读
  • Vue3--Vue Router详解--学习笔记
  • Vue使用基本教程(基本介绍及对比,初步使用,构建项目,编辑器等)
  • 云计算赛项容器云2023搭建
  • Conditional GAN
  • Python如何将项目直接打包为一键整合包
  • C语言--给定一行字符串,获取其中最长单词【图文详解】