当前位置: 首页 > news >正文

这把时间序列预测的活儿交给CNN和GRU组队来干,效果确实有点东西。咱们不整那些虚的,直接看实战代码。先给大伙儿看个整体结构

基于(CNN-GRU)的时间序列预测程序,预测精度很高。 可用于做风电功率预测,电力负荷预测等等 标记注释清楚,可直接换数据运行。 代码实现训练与测试精度分析。

import numpy as np from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Conv1D, MaxPooling1D, GRU, Dense def create_model(input_shape): model = Sequential() # 卷积层提取局部特征 model.add(Conv1D(filters=64, kernel_size=3, activation='relu', input_shape=input_shape)) model.add(MaxPooling1D(pool_size=2)) # GRU捕捉时间依赖 model.add(GRU(100, return_sequences=True)) model.add(GRU(50)) model.add(Dense(1)) model.compile(optimizer='adam', loss='mae') return model

这个双剑合璧的结构挺有意思——CNN负责抓取数据中的局部模式(比如负荷数据中的短时波动),后面的GRU层专门处理时间维度上的长期依赖。注意第二个GRU层没开return_sequences,这样最后输出就是个单值预测了。

数据预处理这块得讲究,直接上滑动窗口处理:

def sliding_window(data, window_size): X, y = [], [] for i in range(len(data)-window_size): X.append(data[i:i+window_size]) y.append(data[i+window_size]) return np.array(X), np.array(y) # 假设raw_data是加载好的时序数据 scaler = MinMaxScaler() scaled_data = scaler.fit_transform(raw_data.reshape(-1,1)) X, y = sliding_window(scaled_data, window_size=24)

这里有个小技巧:先用MinMaxScaler做归一化,把数据压到0-1之间。滑动窗口的步长根据具体场景调整,比如预测小时级负荷可能取24小时周期。

训练时建议加个早停法:

from keras.callbacks import EarlyStopping model = create_model((X.shape[1], 1)) history = model.fit(X_train, y_train, epochs=200, batch_size=32, validation_split=0.2, callbacks=[EarlyStopping(patience=15)])

注意看验证集的loss曲线,一般30-50个epoch就能收敛。实际跑风电数据时发现,batch_size调到64有时效果更好,可能和数据的波动特性有关。

测试环节的误差分析可以这样搞:

y_pred = model.predict(X_test) # 反归一化 real_pred = scaler.inverse_transform(y_pred) real_true = scaler.inverse_transform(y_test.reshape(-1,1)) rmse = np.sqrt(mean_squared_error(real_true, real_pred)) mape = np.mean(np.abs((real_true - real_pred)/real_true)) * 100 print(f'RMSE: {rmse:.2f}, MAPE: {mape:.2f}%')

上次用某省电网负荷数据实测,24小时预测的MAPE能压到3%以内。不过要注意异常天气情况——比如突然高温导致用电激增,这时候可能需要加入气象因子作为额外输入。

最后说下部署注意事项:

  1. 数据更新频率要匹配预测需求(比如5分钟级数据就不要用小时级模型)
  2. 模型最好定期retrain,电力系统数据存在季节特征漂移
  3. 遇到预测误差突然增大,先检查输入数据的完整性

完整代码里我埋了个彩蛋:在损失函数里加入了自适应权重,会根据预测误差的方差动态调整。这个trick让模型在面对波动剧烈的风电数据时,比传统方法稳定不少。

http://www.jsqmd.com/news/188586/

相关文章:

  • 2026年手表抛光推荐:聚焦百达翡丽等名表案例的优质服务中心盘点 - 十大品牌推荐
  • 2026年钟表维修推荐:聚焦高端名表案例的11家服务中心权威评测 - 十大品牌推荐
  • 2026年钟表维修推荐:主流品牌官方与专业服务中心横向评测与11强榜单。 - 十大品牌推荐
  • 亲测好用8个AI论文写作软件,专科生搞定毕业论文!
  • 单光子探测器的光子高效计算 3-D 和反射成像研究附Matlab代码
  • 2026年钟表维修推荐:核心商圈服务网点横向评测与实力排名 - 十大品牌推荐
  • 算法学习小记(一):树
  • 华为2025年失败的手机是pura80?其实是开始阶段的鸿蒙5系统
  • vue+uniapp+基于微信小程序的食堂预约点餐系统的设计与实现_36444434--论文
  • 流量分析_SnakeBackdoor-4
  • 什么是 ‘Streaming Response Recomposition’?在复杂嵌套图中,如何保证首字显示的实时感?
  • 2026年北京名表维修推荐:聚焦多品牌案例的高口碑维修站盘点 - 十大品牌推荐
  • vue+uniapp+基于微信小程序的云校园信息服务系统的设计与实现_943wpi16--论文
  • 反激变换器与Buck - boost电路:电力变换的奇妙世界
  • 学霸同款10个AI论文平台,专科生轻松搞定毕业论文!
  • 解析 ‘Batch Inference’ 优化:利用 `RunnableBatch` 实现跨模型供应商的并行请求合并
  • 黄仁勋“五层蛋糕”揭秘中美AI暗战:从能源到物理AI的全维博弈
  • Bright Data AI Scraper Studio:用一句Prompt,自动生成企业级爬虫架构 - 实践
  • vue+uniapp+小程序php美食菜品点餐订单系统
  • AI Coding嵌入式功能模块及Demo---ST、C、Simulink
  • python虚拟环境实践:Conda 环境激活报错及解决
  • vue+uniapp+小程序springboot 畅玩安阳旅游网站平台的景点门票民宿预订-
  • Vue实战:多案件通讯关系分析组件的设计与实现
  • 表格识别实践:兼顾 “识别本身” 和 “工程落地” 的优化
  • xhEditor pdf导入支持书签和目录
  • 用户画像系统融入企业AI能力中心:AI应用架构师的技术实现与业务价值
  • python虚拟环境:Literal包是做什么用的
  • 使用COMSOL建立脆性材料压缩摩擦剪切破坏的损伤模型,使用非局部本构模型,包含案例和文献
  • vue+uniapp+小程序springboot“热岛”志愿者招募服务平台-三端
  • Python 潮流周刊#134:uv 为什么这么快?