Bootstrap

将一维数据(序列)转化为二维数据(图像)的方法汇总GAFS, MTF, Recurrence plot,STFT

将一维序列数据转化为二维图像数据的方法汇总 详细 全面

一、背景

虽然深度学习方法(1D CNN, RNN, LSTM 等)可以直接处理一维数据,但是当前的深度学习方法主要还是处理二维结构数据的,特别是在计算机视觉CV以及自然语言处理NLP领域,各种各样的方法层出不穷。因此,如果能够将一维序列数据转化为二维(图像)数据, 则可以直接结合CV以及NLP领域的方法,是不是很有趣!

二、方法介绍

格拉米角场 GAFs

原理

缩放后的1D序列数据从直角坐标系统转换到极坐标系统,然后通过考虑不同点之间的角度和/差以识别不同时间点的时间相关性。取决于是做角度和还是角度差,有两种实现方法:GASF(对应做角度和), GADF(对应做角度差)。

实现步骤

Step 1:缩放,将数据范围缩放到[-1,1]或者[0, 1], 公式如下:
(1) (2)
Step 2: 将缩放后的序列数据转换到极坐标系统,即将数值看作夹角余弦值,时间戳看作半径,公式如下:
在这里插入图片描述
: 若数据缩放范围为[-1, 1],则转换后的角度范围为[0, π pi π];若缩放范围为[0, 1],则转换后的角度范围为[0, π pi π/2]。
Step 3:
在这里插入图片描述
可以看到,最终GASF和GADF的计算转化到直角坐标系下变成了“类似”内积的操作。

效率问题:对于长度为n的序列数据,转换后的GAFs尺寸为[n, n]的矩阵,可以采用PAA(分段聚合近似)先将序列长度减小,然后在转换。 所谓的PAA就是:将序列分段,然后通过平均将每个段内的子序列压缩为一个数值, 简单吧!

调用示例

Python工具包pytl中已经提供了API,另外,笔者自行实现代码, 想要查看实现细节以及获取更多测试用例,可从我的 链接获取。

'''
EnvironmentPython 3.6,  pyts: 0.11.0, Pandas: 1.0.3
'''
from mpl_toolkit
;