使用格拉姆角场(GAF)以将时间序列数据转换为图像

这篇具有很好参考价值的文章主要介绍了使用格拉姆角场(GAF)以将时间序列数据转换为图像。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

这篇文章将会详细介绍格拉姆角场 (Gramian Angular Field),并通过代码示例展示“如何将时间序列数据转换为图像”。

Gramian Angular Summation / Difference Fields (GASF / GADF)可以将时间序列转换成图像,这样我们就可以将卷积神经网络 (CNN) 用于时间序列数据

使用格拉姆角场(GAF)以将时间序列数据转换为图像

基本概念

在开始介绍之前,我认为首先我们应该熟悉一下 GASF / GADF 的基本概念。如果您已经知道,可以跳过本节。

笛卡尔坐标:笛卡尔坐标系(Cartesian coordinates,法语:les coordonnées cartésiennes)就是直角坐标系和斜坐标系的统称,相交于原点的两条数轴,构成了平面仿射坐标系 。如两条数轴上的度量单位相等,则称此仿射坐标系为笛卡尔坐标系。两条数轴互相垂直的笛卡尔坐标系,称为笛卡尔直角坐标系,否则称为笛卡尔斜角坐标系。点(或其他几何形状)的位置由一个或多个数字确定。例如,如果我们采用二维坐标系,则位置由一对数字确定,例如 (2,3)。然后在距两条参考线(称为 x 轴和 y 轴)的距离上显示该位置。

使用格拉姆角场(GAF)以将时间序列数据转换为图像

极坐标:属于二维坐标系统,创始人是牛顿,主要应用于数学领域。极坐标是指在平面内取一个定点O,叫极点,引一条射线Ox,叫做极轴,再选定一个长度单位和角度的正方向(通常取逆时针方向)。想象一个以原点为中心的圆,它与点(2,3)相交。我们求这个圆的半径以及x轴与(0,0)和(2,3)连线的夹角。在极坐标中会被表示为(3.6,56.3),也就是说是一个距离极点3.6个单位和极轴夹角为56.3°的点

使用格拉姆角场(GAF)以将时间序列数据转换为图像

格拉姆矩阵:假设我们有一组向量V。格拉姆(Gram)矩阵是来自V的每一对向量的内积矩阵。如下图所示,矩阵中的每个元素< vi, vj> 是向量 vi 和 vj 之间的向量乘积。

使用格拉姆角场(GAF)以将时间序列数据转换为图像

以上图片和介绍来自维基和百度百科,以上就是基本概念的简单介绍,那么咱们开始进入正题。

格拉姆角场

现在我们将朝着这篇文章的主要目标前进,即理解在图像中表示时间序列的过程。简而言之,可以通过以下三个步骤来理解该过程。

使用格拉姆角场(GAF)以将时间序列数据转换为图像

  1. 通过取每个 M 点的平均值来聚合时间序列以减小大小。此步骤使用分段聚合近似 ( Piecewise Aggregation Approximation / PAA)。
  2. 区间[0,1]中的缩放值。
  3. 通过将时间戳作为半径和缩放值的反余弦(arccosine)来生成极坐标。这杨可以提供角度的值。
  4. 生成GASF / GADF。在这一步中,将每对值相加(相减),然后取余弦值后进行求和汇总。

语言描述可能不太准确,下面使用代码详细进行解释

Python 中的示例

我在这里提供了一个 Python 示例,以演示使用格拉姆角场将时间序列转换为图像的逐步过程的状态。

导入需要的包

from pyts.approximation import PiecewiseAggregateApproximation
from pyts.preprocessing import MinMaxScaler
import numpy as np
import matplotlib.pyplot as plt

生成一些demo数据

X = [[1,2,3,4,5,6,7,8],[23,56,52,46,34,67,70,60]]
plt.plot(X[0],X[1])
plt.title(‘Time series’)
plt.xlabel(‘timestamp’)
plt.ylabel(‘value’)
plt.show()

使用格拉姆角场(GAF)以将时间序列数据转换为图像

分段聚合逼近和缩放

# PAA
transformer = PiecewiseAggregateApproximation(window_size=2)
result = transformer.transform(X)

# Scaling in interval [0,1]
scaler = MinMaxScaler()
scaled_X = scaler.transform(result)

plt.plot(scaled_X[0,:],scaled_X[1,:])
plt.title(‘After scaling’)
plt.xlabel(‘timestamp’)
plt.ylabel(‘value’)
plt.show()

使用格拉姆角场(GAF)以将时间序列数据转换为图像

转换成极坐标

arccos_X = np.arccos(scaled_X[1,:])
fig, ax = plt.subplots(subplot_kw={‘projection’: ‘polar’})
ax.plot(result[0,:], arccos_X)
ax.set_rmax(2)
ax.set_rticks([0.5, 1, 1.5, 2]) # Less radial ticks
ax.set_rlabel_position(-22.5) # Move radial labels away from plotted line
ax.grid(True)

ax.set_title(“Polar coordinates”, va=’bottom’)
plt.show()

使用格拉姆角场(GAF)以将时间序列数据转换为图像

Gramian angular summation fields

field = [a+b for a in arccos_X for b in arccos_X]
gram = np.cos(field).reshape(-1,4)
plt.imshow(gram)

使用格拉姆角场(GAF)以将时间序列数据转换为图像

最后补充

上述步骤用于说明使用 Gramian Angular Summation / Difference Field 将时间序列转换为图像的过程。在实际使用时中可以不需要计算极坐标,这是因为以下的三角函数规则:

使用格拉姆角场(GAF)以将时间序列数据转换为图像

为了在 Gramian Angular Field 计算中计算 Cos (A + B),我们将其扩展如下

使用格拉姆角场(GAF)以将时间序列数据转换为图像

因为我们通过取时间序列值的余弦倒数来计算 A 和 B(实际上是在 PAA 和缩放之后的值上)。其他的说明可以参考pyts库关于GramianAngularField的说明。

引用

  1. Wang, Z., & Oates, T. (2015). Imaging time-series to improve classification and imputation. IJCAI International Joint Conference on Artificial Intelligence, 2015-January, 3939–3945.
  2. Eamonn J Keogh and Michael J Paz- zani. Scaling up dynamic time warping for datamining applications. In Proceedings ofthe sixth ACM SIGKDD international conference on Knowledge discovery and data mining, pages 285– 289. ACM, 2000.
  3. https://pyts.readthedocs.io/en/stable/_modules/pyts/image/gaf.html#GramianAngularField
  4. https://www.overfit.cn/post/f1a917448ad34b7099e3dc0126a84d35

作者:Pankaj Chejara文章来源地址https://www.toymoban.com/news/detail-406648.html

到了这里,关于使用格拉姆角场(GAF)以将时间序列数据转换为图像的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(上)

            在前面的几个最小二乘的文章中,实际上已经看到Gram-Schmidt正交化的影子。在我个人看来,Gram-Schmidt正交化更像是专门为了简化最小二乘计算而量身定制的一种算法。下面,我会从最小二乘的经典应用 --- \\\"拟合直线\\\"开始,慢慢引出Gram-Schmidt的核心思想 —— 那就是,

    2024年02月10日
    浏览(51)
  • 线性代数 --- Gram-Schmidt, 格拉姆-施密特正交化(下)

            到目前为止,我们都是在反复强调“对于无解的方程组Ax=b而言,如果矩阵A是标准正交矩阵的话,就怎么怎么好了。。。。”。因为,不论是求投影还是计算最小二乘的正规方程,他们都包含了的逆的计算。只有当A为标准正交矩阵Q时,就不再需要计算的逆了,这时,

    2024年02月13日
    浏览(58)
  • 【信号转换】基于格拉姆矩阵(GASF/GADF)的一维信号转换图像算法【附MATLAB代码】

    GAF是利用坐标变化和格拉姆矩阵,实现将时间序列变化成为二维图像的 一种图像编码技术。GAF是采用极坐标系表示时间矩阵的,再用格拉姆矩阵对 生成的角度进行变换,这主要是因为格拉姆矩阵能够保持时间的依赖性,但是 并不能很好的区分有价值信息和高斯噪声,所以要

    2024年03月21日
    浏览(102)
  • GAF“场景搭建“能力介绍

    上一篇文章对GAF的 服务管理 进行详细介绍,接下来就介绍服务搭建场景的能力。 利用注册的GIS服务,通过流程化可视化的方式配置底图、资源目录、工具条、相机位置来搭建一个三维场景,并可实时预览查看效果,还可通过下载为前端工程以供二次开发,以此来简化GIS场景

    2023年04月23日
    浏览(28)
  • 宁芝普拉姆键盘说明书以及键盘校验软件

    上一次买键盘的说明书已经被玩丢了; 这次也是翻了半天才翻出来,所以在这里记录下; 不得不说,普拉姆静电容键盘确实不戳,三四年前买的是 45g 的,这次是 35g ,码一整天也不会累;

    2024年02月11日
    浏览(48)
  • 使用PyMC进行时间序列分层建模

    在统计建模领域,理解总体趋势的同时解释群体差异的一个强大方法是分层(或多层)建模。这种方法允许参数随组而变化,并捕获组内和组间的变化。在时间序列数据中,这些特定于组的参数可以表示不同组随时间的不同模式。 今天,我们将深入探讨如何使用PyMC(用于概率编

    2024年02月10日
    浏览(59)
  • 使用RobustPCA 进行时间序列的异常检测

    鲁棒主成分分析(Robust Principal Component Analysis, RobustPCA)是一种将时间序列矩阵分解为低秩分量和稀疏分量的技术。这种分解能够识别潜在的趋势,以及检测异常和异常值。在本中我们将研究RobustPCA的数学基础,介绍它与传统的PCA之间的区别,并提供可视化来更好地理解它在时间

    2024年02月07日
    浏览(62)
  • 使用ARIMA进行时间序列预测|就代码而言

    model.fit().predict()函数参数的意思 model.fit() 函数是用来拟合ARIMA模型的,它会根据提供的时间序列数据来估计模型的参数。在这个函数中,没有需要指定额外的参数。 model.predict() 函数是用来进行时间序列的预测的,它可以在拟合后的模型上进行预测。在进行预测时,需要指定

    2024年02月16日
    浏览(53)
  • 机器学习-使用 XGBoost 时间序列预测能源消耗

    简而言之,时间序列预测是根据以前的历史数据预测未来值的过程。目前使用时间序列预测的最热门领域之一是加密货币市场,人们希望预测比特币或以太坊等流行加密货币的价格在未来几天甚至更长时间内将如何波动。另一个现实世界的案例是能源消耗预测。尤其是在能源

    2024年02月11日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包