这个时间序列预测模型有点意思,直接上代码更直观。咱们先看看整个模型的架构长啥样
基于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/5/17 5:20:00 阅读更多 →
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 阅读更多 →

最新新闻

原来网站排名还能“买”到?

原来网站排名还能“买”到?

在传统SEO时代,网站排名确实可以通过竞价排名(SEM)直接“购买”关键词位置,但那种模式本质是付费买流量,一旦停止付费,排名瞬间消失。而在GEO(生成式引擎优化)时代,所谓的…

2026/7/5 2:26:36 阅读更多 →
告别技术空谈:九尾狐AI发布2026年最新企业AI培训体系,主推‘战略到变现‘全周期陪跑模式

告别技术空谈:九尾狐AI发布2026年最新企业AI培训体系,主推‘战略到变现‘全周期陪跑模式

AI短视频矩阵运营:2026企业培训如何实现从战略到变现的全周期陪跑 作为一名长期在一线协助中小企业落地AI应用的博主,我见过太多这样的场景:老板花大价钱请了团队做培训,员工课上听得热血沸腾,回到工位却无从下手&…

2026/7/5 2:26:36 阅读更多 →
西门子S7-1200 PLC轴运动控制配置与优化指南

西门子S7-1200 PLC轴运动控制配置与优化指南

1. 西门子S7-1200 PLC轴运动控制基础架构在工业自动化领域,轴运动控制是PLC应用中最具挑战性的任务之一。西门子S7-1200系列PLC凭借其紧凑的机身设计和强大的运动控制功能,成为中小型自动化项目的首选控制器。这套系统最核心的组件是工艺对象&#xff08…

2026/7/5 2:26:36 阅读更多 →
[MAF预定义ChatClient中间件-05]动态修改ChatOptions和请求消息

[MAF预定义ChatClient中间件-05]动态修改ChatOptions和请求消息

1. 利用ConfigureOptionsChatClient交替使用不同的模型 如下的程序演示了如何利用ConfigureOptionsChatClient中间件来动态地配置ChatOptions的ModelId属性,从而实现交替使用不同的模型来生成响应的功能。如代码片段所示,我们根据OpenAIClient创建了一个…

2026/7/5 2:24:36 阅读更多 →
Linux syslog日志权限出错

Linux syslog日志权限出错

一、Linux syslog日志权限 Linux syslog日志权限出错通常是由于文件权限设置不当或用户权限不足导致的,可通过检查日志文件权限、所有者、用户权限,以及SELinux设置来定位并解决问题。 以下是具体分析和解决步骤: 检查日志文件权限 使用 ls -…

2026/7/5 2:24:36 阅读更多 →
JWT 在线解码、验签、生成一篇讲透:附前端实现、工具架构与在线体验地址

JWT 在线解码、验签、生成一篇讲透:附前端实现、工具架构与在线体验地址

为什么后端说签名不对?HS256、RS256、ES256、PS256 到底怎么切?公钥私钥是 PEM 还是 JWK,到底该贴哪种?改了 payload 之后,怎么重新生成一个能用的 JWT?所以这篇不只讲 JWT 原理,我会直接结合这…

2026/7/5 2:22:35 阅读更多 →

日新闻

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 阅读更多 →

月新闻