开启你的时间序列分析之旅:一步步教你学会HyperTS

news2024/11/17 23:53:37

目录

  • 前言
  • 一、HyperTS介绍
  • 二、HyperTS安装、使用
    • 2-1、安装
    • 2-2、HyperTS使用
  • 三、案例
    • 3-0、通用工作流程
    • 3-1、时间序列预测
    • 3-2、时间序列分类
    • 3-3、时间序列异常检测
  • 四、高级应用
    • 4-1、模型的保存和加载
  • 总结


前言

HyperTS是一个开源的时间序列分析库,主要用于处理和分析时间序列数据。

一、HyperTS介绍

HyperTS是一个开源的时间序列分析库,是 DataCanvas Automatic Toolkits(DAT) 针对于 时间序列 任务推出了一款涵盖 自动机器学习(AutoML) 与 自动深度学习(AutoDL) 的全Pipeline学习工具。主要用于处理和分析时间序列数据。它提供了一系列功能强大的工具和算法,它涵盖了数据清洗、数据预处理、特征工程、模型选择、超参数优化、模型评估、预测可视化等一系列自动化的操作, 轻松几行代码便可以完全 端到端 地处理多种场景下的时间序列任务。

以下是关于HyperTS的一些详细介绍

  • HyperTS支持常见的时间序列分析任务,如平滑、滞后、差分等。它提供了一系列的函数和方法,可以方便地对时间序列数据进行处理和转换。例如,你可以使用smooth函数对时间序列进行平滑处理,使用lag函数对时间序列进行滞后处理。
  • HyperTS提供了多种特征提取方法,用于从时间序列中提取有用的特征。这些特征可以用于构建机器学习模型和预测任务。例如,你可以使用autocorrelation函数计算自相关系数,使用fft函数进行快速傅里叶变换,以及使用wavelet函数进行小波变换。
  • HyperTS支持多种常见的时间序列模型,如ARIMA、GARCH、VAR等。这些模型可以用于时间序列的建模和预测。例如,你可以使用arima函数建立ARIMA模型,使用garch函数建立GARCH模型,以及使用var函数建立VAR模型。
  • HyperTS还提供了一些评估指标和可视化工具,用于评估模型的性能和结果的可视化。例如,你可以使用mse函数计算均方误差,使用plot函数绘制时间序列的图表。

总的来说,HyperTS是一个功能强大的时间序列分析库,可以帮助你处理和分析时间序列数据。你可以使用它进行时间序列的预处理、特征提取、模型建立和预测等任务。

HyperTS的功能特性清单如下
在这里插入图片描述

二、HyperTS安装、使用

2-1、安装

安装

pip install prophet
pip install hyperts

可能会发生的是Numpy版本的一个兼容问题,更新Numpy

pip install --upgrade numpy

**其他:可选择安装tensorflow **:

# 如果使用到深度学习时,需要安装
pip install tensorflow

2-2、HyperTS使用

主要是通过make_experiment函数来训练一个模型

在这里插入图片描述

  • Time Series Task:确定时间序列任务是什么,输入规范后的数据,确定相对应的模型。
  • make_experiment: 通过make_experiment函数的训练,run之后最终得到了一个训练好的模型。
  • predict、evaluate: 使用训练好的模型,去做预测任务、评估模型性能以及作图等。

三、案例

3-0、通用工作流程

通用工作流程

  • 导入所需要的库
  • 加载数据集
  • 使用train_test_split来分割训练集和验证集。
  • 使用make_experiment函数来创建实验,确定任务、数据、模型,进行训练,run之后得到训练后的模型。
  • 评估模型。

其他注意事项

  • 对于划分训练集和测试集,由于数据存在时间上的先后顺序,因此为了防止信息的泄露,我们设置shuffle=False,即不打乱数据集。

3-1、时间序列预测

时间序列预测: 在时间序列任务中,我们除了按照惯例的流程外,我们还需要向make_experiment中传入参数timestamp,即指定时间戳。如果存在协同变量,我们也需要指定协同变量covariates。

from hyperts import make_experiment
from hyperts.datasets import load_network_traffic

from sklearn.model_selection import train_test_split

data = load_network_traffic()
train_data, test_data = train_test_split(data, test_size=0.2, shuffle=False)

model = make_experiment(train_data.copy(),
                        task='multivariate-forecast',
                        mode='stats',
                        timestamp='TimeStamp',
                        covariates=['HourSin', 'WeekCos', 'CBWD']).run()

X_test, y_test = model.split_X_y(test_data.copy())
# 使用predict方法来执行结果的预测。
y_pred = model.predict(X_test)

scores = model.evaluate(y_test, y_pred)

model.plot(forecast=y_pred, actual=test_data)

输出
在这里插入图片描述

3-2、时间序列分类

from hyperts import make_experiment
from hyperts.datasets import load_basic_motions

from sklearn.metrics import f1_score
from sklearn.model_selection import train_test_split

data = load_basic_motions()
train_data, test_data = train_test_split(data, test_size=0.2)

model = make_experiment(train_data.copy(),
                        task='classification',
                        mode='dl',
                        tf_gpu_usage_strategy=1,
                        reward_metric='accuracy',
                        max_trials=30,
                        early_stopping_rounds=10).run()

X_test, y_test = model.split_X_y(test_data.copy())

y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)

scores = model.evaluate(y_test, y_pred, y_proba=y_proba, metrics=['accuracy', 'auc', f1_score])

print(scores)

输出
在这里插入图片描述

3-3、时间序列异常检测

from hyperts import make_experiment
from hyperts.datasets import load_real_known_cause_dataset

from sklearn.model_selection import train_test_split

data = load_real_known_cause_dataset()
ground_truth = data.pop('anomaly')

detection_length = 15000
train_data, test_data = train_test_split(data, test_size=detection_length, shuffle=False)

model = make_experiment(train_data.copy(),
                        task='detection',
                        mode='stats',
                        reward_metric='f1',
                        max_trials=30,
                        timestamp='timestamp',
                        early_stopping_rounds=10).run()

X_test, _ = model.split_X_y(test_data.copy())
y_test = ground_truth.iloc[-detection_length:]

y_pred = model.predict(X_test)
y_proba = model.predict_proba(X_test)

scores = model.evaluate(y_test, y_pred, y_proba=y_proba)

model.plot(y_pred, actual=test_data, history=train_data, interactive=False)

输出

在这里插入图片描述

四、高级应用

4-1、模型的保存和加载

模型的保存

model.save(model_file="./xxx/xxx/models")

# 或者是
from hyperts.utils.models import load_model

pipeline_model = load_model(model_file="./xxx/xxx/models/dl_models")

模型的加载

from hyperts.utils.models import load_model

pipeline_model = load_model(model_file="./xxx/xxx/models/dl_models")

参考文章:
HyperTS官方文档.
github.


总结

明天是端午节啦~ 想她🥹

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

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

相关文章

K8S 云集群安装纯享版 - 傻瓜式一键教程 全自动脚本文件

引言: 用的云服务器,整个过程读者还是需要准备些软妹币的… 另外众所周知,K8S最难的部分是什么?——是安装。。。 目录 0. 技术选型( :bell: 重要!)0.0 version0.1 云服务器 1. 容器运行时2. k8s 安装前准备2.0 网络连…

【计算机视觉】CVPR 2023 上的分割论文真的是神仙打架(介绍前12篇,图像分割,全景分割,语义分割,实例分割)

文章目录 一、图像分割类1.1 AutoFocusFormer: Image Segmentation off the Grid1.2 FreeSeg: Unified, Universal and Open-Vocabulary Image Segmentation1.3 Parameter Efficient Local Implicit Image Function Network for Face Segmentation 二、全景分割类2.1 You Only …

CUDA介绍

CUDA introduction 文章目录 CUDA introduction异构计算架构典型的CUDA程序的执行流程函数类型限定词Kernel 线程层次结构线程ID号计算: Example加法实例托管内存乘法 性能分析工具 Nsight System功能用法 Reference欢迎关注公众号【三戒纪元】 异构计算架构 GPU并…

SIFT算法简介

参考资料 SIFT文献-David-UBC: 《Distinctive Image Features from Scale-Invariant Keypoints》SIFT算法介绍: SIFT特征详解 - Brook_icv - 博客园 (cnblogs.com) 简介 Scale-invariant feature transform 尺度不变特征变换 SIFT算法不仅只有尺度不…

腾讯安全杨光夫:企业需改变“头痛医头”现状,构建持续进化的安全免疫力

6月13日,腾讯安全联合IDC发布“数字安全免疫力”模型框架,主张将守护企业数据和数字业务两大资产作为企业安全建设的核心目标。腾讯安全副总裁杨光夫在《助力企业持续进化安全免疫力》的主题演讲中表示,在新业态、新威胁、新场景、强监管下&a…

【MySQL】MVCC是如何解决快照读下的幻读问题的

文章目录 LBCC当前读 MVCC隐藏列undo logRead View 总结 我们从上文中了解到InnoDB默认的事务隔离级别是repeatable read(后文中用简称RR),它为了解决该隔离级别下的幻读的并发问题,提出了LBCC和MVCC两种方案。其中LBCC解决的是当…

StarRocks 统一 OLAP 引擎在滴滴的探索实践

作者:余辉,滴滴出行 OLAP 团队负责人/专家工程师;李明皇,滴滴出行高级软件开发工程师 发展历程 滴滴的 OLAP 系统早期由用于实时监控系统的 Apache Druid (以下简称 Druid)和离线加速使用的 Apache Kylin&a…

随风摇曳的她——美蕨(matlab实现)

目录 1 随风摇曳的她 2 摇曳带来的哲思 3 Matlab代码实现 1 随风摇曳的她 梦幻的场景、浪漫的气息,带上心爱的人,拥抱在这片花海之下,便有了电影男女主角的氛围感; 就算阅尽了世间风貌,也抵不上和她在一起时锦短情长&a…

Idea批量删除空行

1.在编辑框中使用快捷键ctrl f 打开替换框 2.勾选正则模式 Regex 3.在条件框中输入正则^\s*\n 正则解释,匹配以0个或n个\s空白符起首的换行\n 输入正则后可以看到效果,可以看到单行和多行都被选中了 。 如果想只删除连续多行的空行,就需要…

fl studio for window 21.0.3.3517 官方中文版免费下载及新功能介绍

FL Studio 21 for Mac官方中文版免费下载是一款功能强大的音乐编曲制作软件。尽管你可能没有接触过音乐制作,也能通过fl Studio 21,撰写,整理,录制,编辑,混合,掌握和制作出专业的品质音乐。 fl…

每隔一段时间重试,重试n次 java 工具类

需求: 若代码出现异常,则每隔一段时间重试一下,重试n次 import org.slf4j.Logger; import org.slf4j.LoggerFactory;import java.util.function.Supplier;public class RetryUtils {private static final Logger log LoggerFactory.getLogg…

ASP.NET Core 依赖注入系列一

什么是ASP.NET Core 依赖注入? 依赖注入也称DI是一项技术用来实现对象松耦合以至于应用程序更容易维护,ASP.NET Core通过控制器的构造函数自动注入依赖的对象,我们创建ASP.NET Core MVC应用程序演示依赖注入特性是如何工作, 在这节中我们讲解该特性 1 …

剑指offer45 把数组排成最小的数

剑指offer45 把数组排成最小的数 文章目录 剑指offer45 把数组排成最小的数题目描述思路实现参考文献 题目描述 输入一个非负整数数组,把数组里的所有数字拼接起来排成一个数,打印能拼接出来的所有数字中最小的一个。 思路 此题求拼接起来的最小数字&…

Selenium教程__使用switch_to.window方法处理窗口切换(12)

想一下这样的场景,打开页面A点击一个链接,在一个新的窗口打开页面B,由于之前的driver实例对象在页面A,但是你接下来操作的元素在页面B中,此时脚本就会报错找不到元素。该场景需要使用到selenium的switch_to.window&…

CMake 编译并链接动态库

问题描述 目录结构如下: |---CMP|---mmath|---mmath.h|---mmath.cpp|---CMakeLists.txt|---CMP.cpp|---CMakeLists.txt需要把mmath子项目编译成动态链接库并被CMP.cpp调用 代码如下: //mmath.h namespace mmath { int __declspec(dllexport) add(int…

Python基础(20)——Python函数讲解二

Python基础(20)——Python函数讲解二 文章目录 Python基础(20)——Python函数讲解二目标一. 变量作用域二. 多函数程序执行流程三. 函数的返回值四. 函数的参数4.1 位置参数4.2 关键字参数4.3 缺省参数4.4 不定长参数 五. 拆包和交…

pytest和ValueError: Expect x to not have duplicates(个人笔记)

1.项目在新环境报错为没有pytest 解决办法: 在设置里面的Tools里面的某个选项改为(如下图) 2.同一个项目在旧电脑正常运行,到了新电脑新环境莫名报错 报错为 interpolate.interp1d里面的某个函数报错 具体报错为:Valu…

Bean属性校验

Servlet是一个规范,Tomcat实现的 JDBC是一个规范,各个厂商实现的 JSR303也是一个规范,有人提供实现 我们只需要面向接口编程即可。 一般来说,以javax开头的groupId,都是规范 JSR303提供规范,其余框架实现规…

软考A计划-系统集成项目管理工程师-信息化系统的生命周期-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列 👉关于作者 专注于Android/Unity和各种游戏开发技巧&#xff…

Mysql数据库操作总结

文章目录 1. DDL(Data Definition Language - 数据定义语言)1.1 数据库1.2 数据表(创建查询删除)1.3 数据表(修改) 2. 数据类型2.1 数值2.2 字符2.3 日期 3. 字段约束3.1 约束3.2 主键约束修改3.3 主键自增 联合主键 4. DML(Data Manipulation Language - 数据操作语言)4.1 添…