TDengine 中 TDgpt 的模型评估工具

在这里插入图片描述

模型评估工具

TDgpt 在企业版中提供预测分析模型和异常检测模型有效性评估工具 analytics_compare,该工具能够使用 TDengine 中的时序数据作为
回测依据,评估不同预测模型或训练模型的有效性。

该工具在开源版本中不可用

使用评估工具,需要在其相关的配置文件 taosanode.ini 中设置正确的参数,包括选取评估的数据范围、结果输出时间、参与评估的模型、模型的参数、是否生成预测结果图等配置。

在具备完备的 Python 库的运行环境中,通过 shell 调用 TDgpt 安装路径下的 misc 中 analytics_compare 的命令即可。
可按照如下方式体验模型有效性评估工具:

在配置文件 analytics.ini 配置文件中设置 taosd 服务的连接信息,包括 主机地址、配置文件路径、用户名、登录密码等信息。

[taosd]
# taosd 服务主机名
host = 127.0.0.1
# 登录用户名
user = root# 登录密码
password = taosdata# 配置文件路径
conf = /etc/taos/taos.cfg[input_data]# 用于预测评估的数据库名称
db_name = test# 读取数据的表名称
table_name = passengers# 读取列名称
column_name = val, _c0

评估预测分析模型

  1. 准备数据

在 TDgpt 安装目录下的 resource 文件夹中准备了样例数据 sample-fc.sql, 执行以下命令即可将示例数据写入数据库,用于执行评估

taos -f sample-fc.sql
  1. 设置参数
[forecast]
# 评估用数据每个周期包含的数据点数量
period = 12# 预测生成结果的数据点数量
rows = 10# 评估用数据起始时间
start_time = 1949-01-01T00:00:00# 评估用数据结束时间
end_time = 1960-12-01T00:00:00# 返回结果的时间戳起始值
res_start_time = 1730000000000# 是否绘制预测结果
gen_figure = true[forecast.algos]
# 评估用的模型及参数
holtwinters={"trend":"add", "seasonal":"add"}
arima={"time_step": 3600000, "start_p": 0, "max_p": 5, "start_q": 0, "max_q": 5}
  1. 调用评估工具
python3 ./analytics_compare.py forecast

需确保激活虚拟环境并调用该虚拟环境的 Python,否则启动的时候 Python 会提示找不到所需要的依赖库。

  1. 检查结果

在程序目录下生成 fc_result.xlsx 文件,此文件即为模型评估的结果文件。预测有效性的评估使用 MSE 指标作为依据,后续还将增加 MAPEMAE 指标。
该文件中第一个卡片是模型运行结果(如下表所示),分别是模型名称、执行调用参数、均方误差、执行时间 4 个指标。

algorithmparamsMSEelapsed_time(ms.)
holtwinters{"trend":"add", "seasonal":"add"}351.622125.1721
arima{"time_step":3600000, "start_p":0, "max_p":10, "start_q":0, "max_q":10}433.70945577.9187

如果配置文件 analytics.ini 中设置 gen_figure 为 true,分析结果文件中的后续卡片中在针对每个模型绘制分析预测结果图(如下图)。

在这里插入图片描述

评估异常检测模型

针对异常检测模型提供查全率(recall)和查准率(precision)两个指标衡量模型有效性。
通过在配置文件中analysis.ini设置以下的选项可以调用需要使用的异常检测模型,异常检测模型测试用数据的时间范围、是否生成标注结果的图片、调用的异常检测模型以及相应的参数。

  1. 准备数据

在 TDgpt 安装目录下的 resource 文件夹中准备了样例数据 sample-ad.sql, 执行以下命令即可将示例数据写入数据库

taos -f sample-ad.sql
  1. 设置参数
[ad]
# 数据集起始时间戳
start_time = 2021-01-01T01:01:01# 数据集结束时间戳
end_time = 2021-01-01T01:01:11# 是否绘制检测结果
gen_figure = true# 标注异常检测结果
anno_res = [9]# 用于比较的模型及相关参数设置
[ad.algos]
ksigma={"k": 2}
iqr={}
grubbs={}
lof={"algorithm":"auto", "n_neighbor": 3}
  1. 标注异常检测结果
    调用异常检测模型比较之前,需要人工标注异常监测数据集结果,即在 [anno_res] 选项下标注异常点在测试数组中的位置。
    例如:在 sample-ad 测试数据集中第 9 个点是异常点。需要在 [anno_res] 下异常标注 [9]。如果第 0 个点和第 9 个点是异常点,则
    设置为 [0, 9]

  2. 调用评估工具

python3 ./analytics_compare.py anomaly-detection
  1. 检查结果

对比程序执行完成以后,会自动生成名称为 ad_result.xlsx 的文件,第一个卡片是模型运行结果(如下表所示),分别是模型名称、执行调用参数、查全率、查准率、执行时间 5 个指标。

algorithmparamsprecision(%)recall(%)elapsed_time(ms.)
ksigma{"k":2}1001000.453
iqr{}1001002.727
grubbs{}1001002.811
lof{"algorithm":"auto", "n_neighbor":3}004.660

如果设置了 gen_figuretrue,比较程序会自动将每个参与比较的模型分析结果采用图片方式呈现出来(如下图所示为 ksigma 的异常检测结果标注)。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917758.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917758.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【DL学习笔记】DataLoader类功能和参数说明

文章目录一、Dataset 与 DataLoader 功能介绍抽象类Dataset的作用DataLoader 作用两者关系二、torch.utils.data.DataLoader代码示例常用参数图示num_workers设置多少合适数据加载子进程如何并行的pin_memorysampler两种sampler顺序采样 SequentialSampler随机采样 RandomSampl…

JVM中年轻代、老年代、永久代(或元空间)、Eden区和Survivor区概念介绍

在Java虚拟机(JVM)中,内存管理是自动化的,这主要通过垃圾回收机制实现。JVM将堆内存划分为不同的区域,以便更高效地管理和回收对象。以下是关于年轻代、老年代、永久代(或元空间)、Eden区和Surv…

译 | BBC Studios团队:贝叶斯合成控制方法SCM的应用案例

来自上传文件中的文章《Using Causal Inference for Measuring Marketing Impact: How BBC Studios Utilises Geo Holdouts and CausalPy》 本篇介绍了在传统A/B测试不适用时,如何利用贝叶斯合成控制方法和地理区域保留来评估营销活动效果。其亮点在于通过构建“反事…

Web开发-PHP应用TP框架MVC模型路由访问模版渲染安全写法版本漏洞

我们先使用/index.php/index/index/test,就是图中的test()方法 /index.php/index/index/index,这个回显就是111 http://127.0.0.1:83/index.php/index/index/test2?x123456 public function test2() {$x$_GET[x];return $x; } 这里再做一个案例更详细一…

FreeRTOS列表系统深度解析

FreeRTOS列表系统深度解析 一、核心数据结构 1. 列表控制块 (List_t) typedef struct xLIST {volatile UBaseType_t uxNumberOfItems; // 当前列表项数量ListItem_t * pxIndex; // 遍历指针(用于轮询调度)MiniListItem_t xListEnd; …

《Linux编译器:gcc/g++食用指南》

坚持用 清晰易懂的图解 代码语言,让每个知识点变得简单! 🚀呆头个人主页详情 🌱 呆头个人Gitee代码仓库 📌 呆头详细专栏系列 座右铭: “不患无位,患所以立。” 《Linux编译器:GCC…

SparkKV转换算子实战解析

目录 KV算子 parallelizePairs mapToPair mapValues groupByKey reduceByKey sortByKey 算子应用理解 reduceByKey和groupByKey的区别 groupByKeymapValues实现KV数据的V的操作 改进用reduceByKey groupby通过K和通过V分组的模板代码 问题集锦 宝贵的经验 这里会…

深度解析 TCP 三次握手与四次挥手:从原理到 HTTP/HTTPS 的应用

TCP 的三次握手和四次挥手是网络通信的基石,无论是 HTTP 还是 HTTPS,它们都依赖 TCP 提供可靠的传输层服务。本文将用万字篇幅,结合 Mermaid 图表和代码示例,深入讲解 TCP 三次握手、四次挥手的原理、过程、状态变化,以…

Hyper-V + Centos stream 9 搭建K8s集群(一)

一、创建虚拟机一台32G内存,16核心的Win11,已经安装了Hyper-V 管理器。然后也下载了CentOS-Stream-9-latest-x86_64-dvd1.iso的镜像文件。这里Hyper-V创建虚拟机的过程就不赘述了,如果出现虚拟机加载不到镜像的问题,先把这个使用安…

Pygame如何制作小游戏

以下是 Pygame 的详细使用指南,从安装到开发完整游戏的步骤说明,包含代码示例和最佳实践: 一、安装与环境配置 1. 安装 Pygame pip install pygame2. 验证安装 import pygame pygame.init() print(pygame.version.ver) # 应输出版本号&am…

@【JCIDS】【需求论证】联合能力集成与开发系统知识图谱

JCIDS(联合能力集成与开发系统)知识图谱 1. JCIDS概述 2. JCIDS的提出背景 3. JCIDS核心流程 4. JCIDS分析方法 5. JCIDS优势 6. JCIDS与采办系统的关系 7. JCIDS知识图谱结构 8. 对我的启示 9.JCIDS(联合能力集成与开发系统)相关术语列表 10. 参考文献 1. JCIDS概述 定义:…

每天学一个Linux命令(38):vi/vim

每天学一个 Linux 命令(38):vi/vim vi 和 vim(Vi IMproved)是 Linux 和 Unix 系统中功能强大的文本编辑器。vim 是 vi 的增强版,提供语法高亮、多级撤销、插件支持等更多功能。掌握 vi/vim 是 Linux 系统管理员的必备技能之一。 1. 命令简介 vi:经典的文本编辑器,几乎…

【PZ-ZU49DR-KFB】:璞致电子 UltraScale+ RFSoC 架构下的软件无线电旗舰开发平台

璞致电子 PZ-ZU49DR-KFB 开发板基于 Xilinx ZYNQ UltraScale RFSoC XCZU49DR 主控制器,以 "ARMFPGA 异构架构" 为核心,融合高带宽信号采集、高速数据处理与灵活扩展能力,专为专业工程师打造的软件无线电(SDR&#xff09…

力扣106:从中序与后序遍历序列构造二叉树

力扣106:从中序与后序遍历序列构造二叉树题目思路代码题目 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 思路 我们首先要知道中序遍历和后序…

IDEA JAVA工程入门

Maven配置: IDEA -> settings -> Build, Execution, Deployment -> Build Tools -> MavenMaven home pathUser setting file : 特定仓库下载依赖包,自动下载(界面右边M图标点开,)local repository (本地仓库&#xff…

Spring依赖注入:从原理到实践的自学指南

Spring依赖注入:从原理到实践的自学指南 一、什么是依赖注入? 依赖注入(Dependency Injection, DI)是Spring框架实现控制反转(IoC)的核心手段。其核心思想是:对象不再自己创建依赖项&#xff…

3_软件重构_组件化开发实例方法论

1、上期回顾上次内容核心的地方有两个,①是C多态基类的指针指向派生类,用于初始化各个插件。②是使用C语言的dlopen函数“动态加载”各个插件,实现用户根据契约接口自定义开发插件,极大程度地实现了软件上的解耦。③再进一步&…

C#接口的定义与使用

第1章 接口(interface)是什么1.1 定义• 接口是一组“能力”或“契约”的抽象描述,只规定“能做什么”,不规定“怎么做”。• 在 C# 中,接口是一种完全抽象的类型(fully abstract type)。 • 关…

【STM32】HAL库中的实现(三):PWM(脉冲宽度调制)

🔧 HAL库中的实现:PWM(脉冲宽度调制) PWM(Pulse Width Modulation)是基于定时器(TIM)产生的周期性脉冲信号,广泛应用于:① 电机调速;② LED 亮度控…

GitHub 趋势日报 (2025年08月03日)

🚀 GitHub 趋势日报 (2025年08月03日) 📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图751dyad362LLMs-from-scratch291…