尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
格拉姆角场 GAF 实战:Python 代码 5 步将时间序列转为图像,适配 CNN 分类
格拉姆角场实战5步Python代码实现时间序列到图像的智能转换时间序列数据在金融、医疗、物联网等领域无处不在但传统的分析方法往往难以捕捉其复杂的时空特征。而格拉姆角场Gramian Angular Field, GAF技术为我们打开了一扇新窗——将一维时间序列转化为二维图像让卷积神经网络CNN的图像识别能力得以施展。本文将手把手带您实现从原始数据到GAF图像的完整流程包含数据预处理、极坐标转换和矩阵生成的每个技术细节。1. 环境准备与数据预处理在开始GAF转换前我们需要搭建合适的Python环境并准备好示例数据。推荐使用Anaconda创建虚拟环境conda create -n gaf_env python3.8 conda activate gaf_env pip install numpy matplotlib pyts scikit-learn对于演示数据我们使用模拟的股票价格时间序列。真实场景中这可能是传感器读数、ECG信号或任何时序数据import numpy as np import matplotlib.pyplot as plt # 生成示例时间序列 np.random.seed(42) timestamps np.arange(0, 100) values np.cumsum(np.random.randn(100)) 100 plt.figure(figsize(10,4)) plt.plot(timestamps, values) plt.title(原始时间序列数据) plt.xlabel(时间戳) plt.ylabel(数值) plt.show()关键预处理步骤数据清洗处理缺失值和异常点归一化将值域缩放到[-1, 1]区间降采样使用PAA减少数据量注意归一化是GAF的关键步骤不当的缩放会导致角度计算错误2. 分段聚合近似(PAA)降维长时间序列直接转换会产生超大图像我们先用PAA进行降维from pyts.approximation import PiecewiseAggregateApproximation # 原始数据形状(1, 100) X values.reshape(1, -1) # 设置窗口大小为5将100点降为20点 paa PiecewiseAggregateApproximation(window_size5) X_paa paa.transform(X) # 可视化对比 plt.figure(figsize(10,4)) plt.plot(X[0], o--, label原始数据(100点)) plt.plot(np.arange(2.5, 100, 5), X_paa[0], o-r, labelPAA降维(20点)) plt.legend() plt.title(分段聚合近似(PAA)效果对比) plt.show()PAA参数选择建议窗口大小保留特征计算效率适用场景小(2-5)细节丰富较低高频信号中(5-10)平衡中等一般时序大(10)趋势保留高长期预测3. 极坐标转换时间序列的新视角将缩放后的数据转换为极坐标系是GAF的核心创新from pyts.preprocessing import MinMaxScaler # 缩放到[-1,1]区间 scaler MinMaxScaler(feature_range(-1, 1)) X_scaled scaler.transform(X_paa) # 极坐标转换 phi np.arccos(X_scaled[0]) # 角度 r np.linspace(0, 1, len(phi)) # 半径(时间) # 极坐标可视化 fig plt.figure(figsize(8,8)) ax fig.add_subplot(111, projectionpolar) ax.plot(phi, r, o-) ax.set_title(时间序列的极坐标表示, pad20) plt.show()极坐标转换的数学原理值→角度φ arccos(x), x∈[-1,1]时间→半径r (t - t_min)/(t_max - t_min)技术细节arccos函数在[-1,1]是单调的保证了转换的可逆性4. 生成格拉姆角场矩阵基于极坐标生成两种GAF矩阵def generate_gaf(phi): 生成GASF和GADF矩阵 cos_phi np.cos(phi) sin_phi np.sin(phi) # 格拉姆角和场(GASF) gasf cos_phi.reshape(-1, 1) cos_phi.reshape(1, -1) - sin_phi.reshape(-1, 1) sin_phi.reshape(1, -1) # 格拉姆角差场(GADF) gadf sin_phi.reshape(-1, 1) cos_phi.reshape(1, -1) - cos_phi.reshape(-1, 1) sin_phi.reshape(1, -1) return gasf, gadf gasf, gadf generate_gaf(phi) # 可视化 fig, (ax1, ax2) plt.subplots(1, 2, figsize(12,5)) ax1.imshow(gasf, cmaprainbow) ax1.set_title(GASF矩阵) ax2.imshow(gadf, cmaprainbow) ax2.set_title(GADF矩阵) plt.tight_layout() plt.show()GAF矩阵特性对比特性GASFGADF数学形式cos(φi φj)sin(φi - φj)对角线值cos(2φi)0时间相关性强中等适用场景周期性分析突变检测5. 端到端GAF生成管道将上述步骤封装为可复用的管道from sklearn.pipeline import Pipeline from pyts.preprocessing import MinMaxScaler from pyts.approximation import PiecewiseAggregateApproximation class GramianAngularField: def __init__(self, methodsum): self.method method def transform(self, X): phi np.arccos(X) if self.method sum: return np.cos(phi[:, None] phi[None, :]) else: return np.sin(phi[:, None] - phi[None, :]) # 构建管道 gaf_pipeline Pipeline([ (paa, PiecewiseAggregateApproximation(window_size5)), (scaler, MinMaxScaler(feature_range(-1, 1))), (gaf, GramianAngularField(methodsum)) ]) # 应用管道 X_gasf gaf_pipeline.fit_transform(values.reshape(1, -1)) # 保存结果 plt.imsave(gasf_image.png, X_gasf[0], cmaprainbow)管道优化技巧动态调整PAA窗口大小尝试不同的颜色映射(cm
RELATED

相关推荐

Astropy坐标转换实战:3种天体坐标系互转与10万级星表匹配

Astropy坐标转换实战:3种天体坐标系互转与10万级星表匹配

Astropy坐标转换实战:3种天体坐标系互转与10万级星表匹配1. 天体坐标系基础与Astropy实现原理天文学研究中,坐标系转换是最基础却至关重要的操作。想象一下,当你需要将哈勃望远镜观测的星系位置与射电望远镜数据对齐时,就像要把分…

📅 2026/11/6 13:04:18
个人微信API二次开发,遇到React Native就瞎了?难道没逆向过Hermes字节码与AST重构吗?

个人微信API二次开发,遇到React Native就瞎了?难道没逆向过Hermes字节码与AST重构吗?

在个人微信API二次开发的广阔水域中,很多开发者在处理传统的原生界面(如使用 C 和 Java 编写的聊天主界面)时游刃有余。然而,微信作为一个庞大的超级 App,其内部集成了大量的动态化模块(例如视频号、看一看…

📅 2026/11/6 8:20:19
3种灰色预测模型对比:传统/新信息/新陈代谢 GM(1,1) 误差平方和选型指南

3种灰色预测模型对比:传统/新信息/新陈代谢 GM(1,1) 误差平方和选型指南

灰色预测模型实战选型指南:传统、新信息与新陈代谢GM(1,1)的深度对比 当面对小样本数据预测时,传统统计方法往往束手无策,而灰色预测模型却能展现出惊人的适应性。在实际项目中,数据科学家经常面临一个关键决策:三种主…

📅 2026/10/7 18:25:54
MORE NEWS

更多资讯

📰

中级电工证有啥补贴?官方报名入口怎么选才不吃亏

中级电工证有啥补贴?官方报名入口怎么选才不吃亏 之前考的证在外省能不能转过来?这个是很多已经持有特种作业操作证的从业者最关心的问题,尤其是像你在洛阳涧西区从事房建工程的电工朋友,可能手里拿着的证是在其他省市考的,现在想在本地继续使用或者申请…

📰

中级电工证有啥补贴千万别踩坑?考前必看的避坑指南

中级电工证有啥补贴千万别踩坑?考前必看的避坑指南 怕考不过白交培训费?中级电工证有啥补贴?这些问题你可能正在纠结。尤其是商丘的市政公用工程从业者,考个电工证看似是门槛,实则可能是打开高薪通道的钥匙。但很多考生在报名、培训、考试过程中踩坑,最…

📰

高压电工证要怎么考 良心建议:从报名到拿证全攻略

高压电工证要怎么考 良心建议:从报名到拿证全攻略 现在找工作,没证寸步难行,特别是像高压电工证这种硬门槛,没它连门都进不去。别急,这篇【高压电工证要怎么考】的良心建议,是根据郑州多家培训机构学员的真实经验整理的,照着来,稳稳拿证。…

📰

威远哪里可以考电工证良心建议:选对培训机构,一次过证不踩坑

威远哪里可以考电工证良心建议:选对培训机构,一次过证不踩坑 怕考不过白交培训费?这话说得实在,也道出了很多准备报考电工证朋友的真实顾虑。别急,今天咱们就来聊聊威远哪里可以考电工证这个问题,给出几个 良心建议…

📰

河池低压电工证报名地点保姆级教程:学历不高也能拿证

河池低压电工证报名地点保姆级教程:学历不高也能拿证 你是不是也担心自己学历不高,根本报不上低压电工证?别急,今天这篇保姆级教程就告诉你, 河池低压电工证报名地点 到底在哪,怎么报,能不能报,尤其是像你这种学历不高的朋友,也能顺利拿到证!…

📰

之前考的证在外省能不能转过来?电工证获取途径怎么填通过率揭秘

之前考的证在外省能不能转过来?电工证获取途径怎么填通过率揭秘 之前考的证在外省能不能转过来?这个问题其实困扰了不少正在准备考证或者已经拿到证的电工从业者。特别是像你这样在商丘从事劳务班组的负责人,经常需要处理跨省作业的项目,证书的有效性、可…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬