时间序列分类算法 极简设计之ROCKET、MiniRocket详解及python实战

前言

时间序列分类任务也是比较常见的任务,根据分类,来判断时间序列的性质,类别等。

其中rocket算法十分另类,看似用的非常简单且暴力的方式,却拿到了不错的效果,以及拥有非常快的推理和训练速度。

后续还有minirocket,在rocket的基础上进行简化,在基本上不损失精度的前提下,拥有更快的速度。

ROCKET(RandOm Convolutional KErnel Transform)

ROCKET: Exceptionally fast and accurate time series classification using random convolutional kernels

论文:https://arxiv.org/abs/1910.13051 github:https://github.com/angus924/rocket

理论知识

ROCKET算法的优点在于其简单性和效率。梳理一下训练和预测过程:

  1. 随机生成卷积核: 生成大量卷积核(例如10,000个)。且这些卷积核都是不同的,拥有随机的长度、扩张和填充,以及随机的权重和偏差,这意味着它们不是从数据中学习得到的,而是预先设定的。

  2. 对时间序列进行卷积: 使用生成的卷积核对每个时间序列进行卷积运算。提取时间序列数据中各种模式和特征。

  3. 从卷积结果中提取特征: 对于每个卷积核得到的卷积结果,ROCKET计算两个简单的统计量:最大值(类似于maxpooling)和正数值的比例(ppv:proportion of positive values)。使得分类器能够衡量给定模式在时间序列中的流行程度。所以如果对于一条时间序列来说,会产生卷积核数量✖️2的特征树

  4. 训练线性分类器: 利用提取的特征来训练一个线性分类器(线性的都可以)。ROCKET通过将时间序列转换为特征向量,使得分类器可以应用于标准的机器学习任务。

  5. 进行预测: 使用训练好的分类器对新的时间序列数据进行分类预测。

实战

具体源码可以看

  • https://github.com/angus924/rocket/blob/master/code/rocket_functions.py

3a6a975089bb8b3dcdc5909347f6fb3c.jpeg

这块就是卷积提取特征的过程

具体使用:

if __name__ == '__main__':x = np.random.uniform(0, 1, 30)x = x.reshape((1, len(x)))kernels = generate_kernels(30, 20)y = apply_kernels(x, kernels)print(y.shape)

结果

c4d913277926f2d76d57b14d02167190.jpeg

或者直接用sktime去学习怎么用,现在官方也在引导大家用sktime去用rocket,sktime里把rocket的几种变体融合在一起了

sktime:https://www.sktime.net/en/stable/

rocket api:https://www.sktime.net/en/stable/api_reference/auto_generated/sktime.classification.kernel_based.RocketClassifier.html

输入 可以是怎么多格式

Parameters----------X : 3D np.array (any number of dimensions, equal length series)of shape [n_instances, n_dimensions, series_length]or 2D np.array (univariate, equal length series)of shape [n_instances, series_length]or pd.DataFrame with each column a dimension, each cell a pd.Series(any number of dimensions, equal or unequal length series)or of any other supported Panel mtypefor list of mtypes, see datatypes.SCITYPE_REGISTERfor specifications, see examples/AA_datatypes_and_datasets.ipynby : 1D np.array of int, of shape [n_instances] - class labels for fittingindices correspond to instance indices in X

这块不赘述了,直接看代码详解很详细,不光是 rocket,只要是分类的方法,在sktime里的输入格式都是一样的

from sktime.classification.kernel_based import RocketClassifier
from sktime.datasets import load_unit_testX_train, y_train = load_unit_test(split="train", return_X_y=True)
print(X_train.shape, y_train.shape)
X_test, y_test = load_unit_test(split="test", return_X_y=True)
clf = RocketClassifier(num_kernels=500)clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(y_pred)

结果

(20, 1) (20,)['1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '1' '2' '2' '1' '2' '2' '1''2' '2' '2' '1']

MiniRocket

MINIROCKET: A Very Fast (Almost) Deterministic Transform for Time Series Classification

论文:https://arxiv.org/abs/2012.08791 github:https://github.com/angus924/minirocket

理论优化

MiniRocket ROCKET方法的一种更快、更小型的变体,它提供几乎相同的性能,同时极大地减少了计算的时间和资源消耗,在更大的数据集上比 Rocket 快 75 倍,同时保持基本相同的准确性。

核心思想是简化ROCKET的随机卷积核特征提取过程。主要是两个过程优化了,其他基本一致。

  1. 卷积核确定化

  2. 特征只用了ppv

301cd486ee31a9c33d857d2cec66c7f0.jpeg

论文一张图全部直接概括了。

实战

from sktime.classification.kernel_based import RocketClassifier
from sktime.datasets import load_unit_testX_train, y_train = load_unit_test(split="train", return_X_y=True)
print(X_train.shape, y_train.shape)
X_test, y_test = load_unit_test(split="test", return_X_y=True)
clf = RocketClassifier(num_kernels=500, rocket_transform="minirocket")clf.fit(X_train, y_train)
y_pred = clf.predict(X_test)
print(y_pred)

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

c1b340b4538a0d3db49e9b769c5e406c.jpeg

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

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

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

相关文章

Java并发基础:ArrayBlockingQueue全面解析!

内容摘要 ArrayBlockingQueue类是一个高效、线程安全的队列实现,它基于数组,提供了快速的元素访问,并支持多线程间的同步操作,作为有界队列,它能有效防止内存溢出,并通过阻塞机制平衡生产者和消费者的速度…

[职场] 公安管理学就业方向及前景 #媒体#笔记#笔记

公安管理学就业方向及前景 公安管理学是中国普通高等学校本科专业。本专业文理兼收,学制4年,授予法学学士学位。本专业培养掌握马克思主义基本原理,政治坚定,坚持党和国家的路线、方针、政策,具有良好职业素养、科学素…

K210如何下载程序

一、打开资料包里提供的K-Flash程序烧录软件 二、选择串口 三、选择波特率 四、选择In-Chip,烧录到Flash芯片里面,重新上电还会运行程序 五、如果选择In - Memory,这次可以运行,但下次重新上电就不会保持这次的程序了。 六、选择固…

macOS Sonoma 14.3.1(23D60)发布

系统介绍 黑果魏叔2 月 9 日消息,苹果今日向 Mac 电脑用户推送了 macOS 14.3.1 更新(内部版本号:23D60),本次更新距离上次发布隔了 17 天。 魏叔 查询苹果官方更新日志,macOS Sonoma 14.3.1 修复内容和 …

LeetCode-第28题-找出字符串中第一个匹配项的下标

1.题目描述 给你两个字符串 haystack 和 needle ,请你在 haystack 字符串中找出 needle 字符串的第一个匹配项的下标(下标从 0 开始)。如果 needle 不是 haystack 的一部分,则返回 -1 。 2.样例描述 3.思路描述 可以让字符串 …

【JAVA WEB】盒模型

目录 边框 内边距 基础写法 复合写法 外边距 基础写法 复合写法 块级元素的水平居中 弹性布局 设置行内元素的属性 ,span 每一个HTML元素就相当于是一个矩形的“盒子” 这个盒子由以下这几个部分构成: 1.边框 border 2.内容 content 3.内边…

写后台接口,前后台数据对接(vue+springboot)

一、怎么写接口??? 1.Entity(定义一堆属性之类的) altins>getter和setter方法 2.Controller 3.Service(查询出数据) 调用了一个方法 4.Mapper 5.回到service(返回数据&#x…

2019 年全国职业院校技能大赛高职组 “信息安全管理与评估”赛项任务书(笔记详解)

1. 网络拓扑图 2. IP 地址规划表 3. 设备初始化信息 阶段一 任务 1:网络平台搭建 1、根据网络拓扑图所示,按照 IP 地址参数表,对 DCFW 的名称、各接口IP 地址进行配置。 2、根据网络拓扑图所示,按照 IP 地址参数表,对 DCRS 的名称进行配置,创建 VLAN 并将相应接口划入 …

ChatGPT高效提问—prompt常见用法(续篇七)

ChatGPT高效提问—prompt常见用法(续篇七) 1.1 零样本、单样本和多样本 ​ ChatGPT拥有令人惊叹的功能和能力,允许用户自由向其提问,无须提供任何具体的示例样本,就可以获得精准的回答。这种特性被称为零样本&#x…

【教3妹学编程-算法题】LCP 30. 魔塔游戏

3妹:2哥,干嘛呢,一个人闷闷不乐的,在看什么呢。 2哥 : 这不快过年了嘛, 想回家过年给我的小侄子买个礼物,结果他张口说想要个ps5. 那玩意我都没有,他还想要。我看看网上有什么好的礼物适合他的。…

vscode开发FPGA(0)--windows平台搭建

一、从官网下载安装VScode Download Visual Studio Code - Mac, Linux, Windows 二、安装配置插件 1. 安装Chinese(simplified)中文汉化包 2.安装Verilog-HDL/systemVerilog插件(支持verilog语法) 3.配置CTags Support插件(支持代码跳转) 1)在github下…

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Slider组件

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Slider组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Slider组件 滑动条组件,通常用于快速调节设置值,如音量调…

AcWing 1224 交换瓶子(简单图论)

[题目概述] 有 N 个瓶子,编号 1∼N,放在架子上。 比如有 5 个瓶子: 2 1 3 5 4 要求每次拿起 2 个瓶子,交换它们的位置。 经过若干次后,使得瓶子的序号为: 1 2 3 4 5 对于这么简单的情况,显然&a…

[SAP] ABAP代码程序美化器大小写格式化设置

按照ABAP开发的规范,ABAP源代码里推荐将所有的关键字大写,其余ABAP变量小写 我们可以手动修改上述代码大小写规范的问题,但如果代码量很多的情况下,手动确保这个规范(所有的关键字大写,其余ABAP变量小写)有点费事&…

LabVIEW工业监控系统

LabVIEW工业监控系统 介绍了一个基于LabVIEW软件开发的工业监控系统。系统通过虚拟测控技术和先进的数据处理能力,实现对工业过程的高效监控,提升系统的自动化和智能化水平,从而满足现代工业对高效率、高稳定性和低成本的需求。 随着工业自…

TP-LINK今年的年终奖。。

TP-LINK 年终奖 如果说昨天爆料的「浦发银行年终奖,一书抵万金」还稍有争议(有些说没发,有些说 3/4/5 折),那今天的 TP-LINK 则是毫无悬念。 据在职的 TP-LINK 技术员工爆料:入职时说好的 16 薪&#xff0c…

Blazor Wasm Gitee 码云登录

目录: OpenID 与 OAuth2 基础知识Blazor wasm Google 登录Blazor wasm Gitee 码云登录Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasmBlazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端…

联合体知识点解析

联合体: 联合体也是一种自定义类型, 特点是成员变量公用一块空间。所以也叫共用体。 联合体的性质 先定义一个联合体: 然后我创建一个联合体变量: 现在探究当修改一个成员变量的值时, 其他成员变量的值能否被修改&am…

Python相关的基础模块

Python相关的基础模块 在编写远程控制工具之前,先要介绍用Python编写远程控制工具时所需要的 相关模块,为接下来编写工具打下基础。 1.subprocess模块 subprocess模块的主要作用是执行外部的命令和程序。当我们运行Python的时 候,其实也是在运…

endnotesX9 如何批量导入 .enw文件

文章是用schoolar搜出来 点击下载引用之后,endnotesX9只能一个一个从.enw文件导入,麻烦 —————————————— 可以在schoolar保存到个人图书馆 类似于上面这种,我用的是保存,保存很多的论文之后点我的个人图书馆&#x…