这个时间序列预测模型有点意思,直接上代码更直观。咱们先看看整个模型的架构长啥样
基于python语言的CNN—GRU—Attention模型实现时间序列预测。 可实现多变量预测单变量也可以实现单变量预测单变量。 多步预测单步预测随意切换 替换数据即可运行模型参数修改方便from keras.layers import Input, Conv1D, GRU, Dense, Multiply, Activation from keras.models import Model def build_model(time_steps, features, output_steps1): inputs Input(shape(time_steps, features)) # CNN抓局部特征 cnn Conv1D(filters64, kernel_size3, activationrelu)(inputs) cnn Conv1D(filters32, kernel_size2, activationrelu)(cnn) # GRU处理时序依赖 gru_out, gru_state GRU(128, return_sequencesTrue, return_stateTrue)(cnn) # Attention机制加权重分配 attention Dense(1, activationtanh)(gru_out) attention Activation(softmax)(attention) context Multiply()([gru_out, attention]) # 输出层配置 output Dense(64, activationrelu)(context) output Dense(output_steps)(output) return Model(inputsinputs, outputsoutput)注意看这个Attention层的骚操作——先用全连接层生成注意力权重softmax归一化后和GRU输出做乘法。相当于让模型自己决定哪些时间节点的特征更重要这个设计在处理长时间序列时贼好用。数据预处理部分建议搞个万能模板from sklearn.preprocessing import MinMaxScaler import numpy as np def load_data(data, look_back24, predict_step1): scaler MinMaxScaler() scaled_data scaler.fit_transform(data) X, y [], [] for i in range(len(scaled_data)-look_back-predict_step): X.append(scaled_data[i:ilook_back]) y.append(scaled_data[ilook_back:ilook_backpredict_step, 0]) # 假设预测第一列 return np.array(X), np.array(y), scaler这个函数设计得很灵活改个predictstep参数就能切换单步/多步预测。比如设predictstep3就是预测未来3个时间点注意y的切片维度变化就行。训练环节有个坑得提醒时间序列数据最好别用随机shuffle。建议用自定义的TrainingSplitter保持时间连续性。不过非要shuffle的话可以在数据切分前整体打乱from keras.callbacks import EarlyStopping model.compile(lossmse, optimizeradam) early_stop EarlyStopping(monitorval_loss, patience5) # 训练时记得关shuffle history model.fit(X_train, y_train, epochs100, validation_split0.2, callbacks[early_stop], shuffleFalse)预测阶段有个实用技巧——滚动预测。当需要多步预测时可以迭代更新输入序列def rolling_predict(model, initial_data, steps5): predictions [] current_input initial_data.copy() for _ in range(steps): pred model.predict(current_input[np.newaxis, ...])[0] predictions.append(pred[0]) # 更新输入序列保持长度不变 current_input np.roll(current_input, -1, axis0) current_input[-1] pred return predictions这个实现里用到了numpy的roll函数每次预测后把新结果拼到序列末尾适合需要连续预测的场景。不过要注意误差累积问题预测步数太多准确率会下降。基于python语言的CNN—GRU—Attention模型实现时间序列预测。 可实现多变量预测单变量也可以实现单变量预测单变量。 多步预测单步预测随意切换 替换数据即可运行模型参数修改方便模型参数建议集中管理比如搞个配置字典config { time_steps: 24, # 时间窗口长度 features: 5, # 输入特征数 output_steps: 1, # 预测步长 epochs: 100, batch_size: 32 }改配置比改代码安全多了特别是需要做参数调优的时候。比如想试下三天预测直接把output_steps改成72假设每小时一个数据点模型结构会自动适配。最后说下数据适配技巧。当原始数据存在缺失值时可以穿插个插值处理from sklearn.impute import SimpleImputer imputer SimpleImputer(strategylinear) filled_data imputer.fit_transform(raw_data)比直接删数据更合理特别是高频采集的数据。不过遇到连续大段缺失的情况还是得结合业务逻辑处理。这套模型在实际项目中跑过电力负荷预测单变量情况下24小时预测的MAE能压到2.3%左右。多变量模式加上温度、湿度等特征后还能再降0.5个百分点。关键是要根据数据特性调整CNN的卷积核大小和GRU的单元数别无脑堆层数。

相关新闻

大模型国家标准落地,大模型应用指南:小白也能掌握的金融科技新趋势,收藏学习必备!

大模型国家标准落地,大模型应用指南:小白也能掌握的金融科技新趋势,收藏学习必备!

文章介绍了中国大模型技术在全球的竞争力,以及《人工智能大模型》系列国家标准的实施,标志着中国AGI发展进入规范有序阶段。重点阐述了智能体生态、多模态融合技术,以及大模型在资管行业的应用,包括投研、风控、客服与交易等环节的…

2026/7/5 2:33:41 阅读更多 →
AI产品经理转行大模型必读,央视都说AI大模型人才缺口大,为什么大家还是找不到工作?

AI产品经理转行大模型必读,央视都说AI大模型人才缺口大,为什么大家还是找不到工作?

本文为AI产品经理提供了转行做大模型的全面指南,涵盖了必备素质、技能评估、学习资源、实践方法及团队协作策略。文章详细介绍了如何理解和应用大模型技术,并提供了丰富的学习材料和案例,帮助读者掌握大模型的相关知识和技能,同时…

2026/7/4 20:10:58 阅读更多 →
大模型开发 - 手写Manus之Sandbox执行代码:03 用Docker为AI Agent打造安全沙箱

大模型开发 - 手写Manus之Sandbox执行代码:03 用Docker为AI Agent打造安全沙箱

文章目录引言一、新增依赖二、DockerSandbox:容器生命周期管理2.1 安全配置2.2 容器启动2.3 命令执行2.4 执行结果封装三、SandboxTool:面向Agent的工具封装3.1 多语言代码执行3.2 自动启动机制四、注册工具并更新系统提示词五、完整执行流程总结引言 在…

2026/7/3 4:47:44 阅读更多 →

最新新闻

曲线曲线2D解析求交方案

曲线曲线2D解析求交方案

曲线曲线2D解析求交方案 文章目录曲线曲线2D解析求交方案一. 2D 点到椭圆的最近点计算1. 推荐主方案:λ 方程 Halley bracket 保护2. bracket 区间3. Halley bracket 保护4. Newton bracket 对比实现5. 轴线和中心特殊情况6. 椭圆弧最近点7. 方向角初值方案的定位…

2026/7/5 3:23:00 阅读更多 →
Entity Framework 4.1 DbContext使用记之三——如何玩转实体的属性值?

Entity Framework 4.1 DbContext使用记之三——如何玩转实体的属性值?

今天为大家带来DbSet.Local属性的使用与实现。和上次介绍的Find函数首先查找context中缓存的实体类似,DbSet的Local属性也是返回context中缓存并且被跟踪的实体。不同点在于,Local属性不会返回状态为EntityState.Deleted的实体,且即使缓存中什…

2026/7/5 3:23:00 阅读更多 →
面试官问:项目中分布式事务怎么处理的?

面试官问:项目中分布式事务怎么处理的?

第一层:先讲本地事务 Transactional(基础铺垫)先从单体本地事务切入,体现基础功底:单体服务单库场景,我们用 Spring 的 Transactional 声明式本地事务;底层依靠 AOP 实现,保证同一个…

2026/7/5 3:23:00 阅读更多 →
KARL四维权限模型:资源粒度、操作语义、上下文约束与继承链路深度解析

KARL四维权限模型:资源粒度、操作语义、上下文约束与继承链路深度解析

1. 项目概述:KARL权限模型不是“配个role”就完事的系统工程KARL——这个在开源知识协作领域低调但极具设计深度的平台,它的权限体系远非传统RBAC(基于角色的访问控制)所能简单概括。我第一次接触KARL是在2021年参与一个高校数字人…

2026/7/5 3:18:59 阅读更多 →
微信 Dat 文件逆向分析:从 0x17CE 文件头到 PNG 图片的 3 步解密实战

微信 Dat 文件逆向分析:从 0x17CE 文件头到 PNG 图片的 3 步解密实战

微信 Dat 文件逆向实战:从文件头特征到自定义解密工具开发在移动互联网时代,即时通讯软件产生的数据安全一直是个值得关注的话题。作为国内主流的社交应用,微信对本地存储的图片、视频等多媒体文件采用了特定的加密保护措施。本文将带您深入探…

2026/7/5 3:18:59 阅读更多 →
Android随笔-APP首次启动流程

Android随笔-APP首次启动流程

从用户点击应用图标到 Activity 执行 onCreate() 的完整流程,涉及 Launcher 进程 → SystemServer 进程 → Zygote 进程 → 应用进程 之间的多轮跨进程通信。以下是详细拆解: 一、核心通信方式概览通信双方IPC 方式作用Launcher → AMS/ATMSBinder IPC发…

2026/7/5 3:18:58 阅读更多 →

日新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻