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

【Python TensorFlow】BiTCN-BiLSTM双向时间序列卷积双向长短期记忆神经网络时序预测算法(附代码)

  资源下载:https://download.csdn.net/download/vvoennvv/92324145

 目录

一,概述

        BiTCN-BiLSTM时序预测算法将双向时间卷积网络(BiTCN)与双向长短期记忆网络(BiLSTM)级联,用于多特征输入的多步输出时间序列预测。通过滑动窗口构造监督样本,利用双向扩张卷积提取多尺度局部时序模式,再用双向LSTM融合长程依赖与前后文信息,最后经多层全连接与线性输出层实现多步回归。该结构结合TCN的并行、高效、可控感受野与LSTM的序列记忆能力,提高对复杂动态模式(如风电功率/负荷等)的拟合与多步外推能力。

BiTCN-BiLSTM算法的流程如下:

(1)数据准备:首先,我们需要准备历史数据作为训练集。

(2)数据预处理:对于训练集中的数据,我们需要进行一些预处理操作,比如去除异常值、归一化等,以提高预测模型的准确性。

(3)网络构建:根据预处理后的训练集,我们构建BiTCN-BiLSTM网络模型。该模型包括输入层、双向TCN层、双向LSTM层、全连接 + LeakyReLU层和输出层。

(4)模型训练:采用 MSE 作为回归损失,Adam 优化器提升收敛速度与鲁棒性,同时监控 MAE 作为评估指标。

(5)模型评估:在训练完成后,我们需要对模型进行评估。这可以通过将训练集中的一部分数据作为测试集,来计算模型的预测误差和准确率。

二,代码

代码中文注释非常清晰,按照示例数据修改格式,替换数据集即可运行,数据集可以是csv或者excel表格。

部分代码如下:


if __name__ == "__main__":warnings.filterwarnings("ignore")  # 取消警告# 使用pandas模块的read_csv函数读取名为"电力负荷预测数据.csv"的文件。# 参数 'encoding' 设置为 'gb2312',这通常用于读取中文字符,确保文件中的中文字符能够正确读取。# 读取的数据被存储在名为 'dataset' 的DataFrame变量中。# dataset = pd.read_csv("电力负荷预测数据.csv", encoding='gb2312')# 下面是读取xlsx的方式,根据实际数据集文件选择是read_csv还是read_exceldataset = pd.read_excel("风电场功率预测.xlsx", sheet_name='Sheet1', header=0)print(dataset)  # 显示dataset数据# 从dataset DataFrame中提取数据。# dataset.values将DataFrame转换为numpy数组。# [:,1:],逗号前是行,逗号之后是列。这个表示选择所有行(:)和从第二列到最后一列(1:)的数据。# 这样做通常是为了去除第一列,这在第一列是索引或不需要的数据时很常见。# 只取第2列数据,要写成1:2;只取第3列数据,要写成2:3,取第2列之后(包含第二列)的所有数据,写成 1:# 单输入单步预测,就让values等于某一列数据,n_out = 1,n_in, num_samples, scroll_window 根据自己情况来# 单输入多步预测,就让values等于某一列数据,n_out > 1,n_in, num_samples, scroll_window 根据自己情况来# 多输入单步预测,就让values等于多列数据,n_out = 1,n_in, num_samples, scroll_window 根据自己情况来# 多输入多步预测,就让values等于多列数据,n_out > 1,n_in, num_samples, scroll_window 根据自己情况来values = dataset.values[:, 1:]# 如果第一列不是索引,需保留全部列的数据时,则使用下面这句代码,并把上面那句代码屏蔽# values = dataset.values[:, :]# 确保所有数据是浮点数# 将values数组中的数据类型转换为float32。# 这通常用于确保数据类型的一致性,特别是在准备输入到神经网络模型中时。values = values.astype('float32')# 下面是多特征输入,多步预测的案例n_in = 5  # 输入前5行的数据n_out = 2  # 预测未来2步的数据or_dim = values.shape[1]  # 记录特征数据维度# 默认是全部数据用于本次网络的训练与测试,也可以设定具体是数值,比如2000,这个数值不能超过实际的数据点num_samples = values.shape[0] - n_in - n_out# num_samples = 2000scroll_window = 1  # 如果等于1,下一个数据从第二行开始取。如果等于2,下一个数据从第三行开始取res = data_collation(values, n_in, n_out, or_dim, scroll_window, num_samples)# 把数据集分为训练集和测试集# 将前面处理好的DataFrame(data)转换成numpy数组,方便后续的数据操作。values = np.array(res)# 计算训练集的大小。# 设置80%作为训练集# int(...) 确保得到的训练集大小是一个整数。n_train_number = int(num_samples * 0.8)# 先划分数据集,在进行归一化,这才是正确的做法!Xtrain = values[:n_train_number, :n_in * or_dim]Ytrain = values[:n_train_number, n_in * or_dim:]Xtest = values[n_train_number:, :n_in * or_dim]Ytest = values[n_train_number:, n_in * or_dim:]# 对训练集和测试集进行归一化m_in = MinMaxScaler()vp_train = m_in.fit_transform(Xtrain)  # 注意fit_transform() 和 transform()的区别vp_test = m_in.transform(Xtest)  # 注意fit_transform() 和 transform()的区别m_out = MinMaxScaler()vt_train = m_out.fit_transform(Ytrain)  # 注意fit_transform() 和 transform()的区别vt_test = m_out.transform(Ytest)  # 注意fit_transform() 和 transform()的区别# 将训练集的输入数据vp_train重塑成三维格式。# 结果是一个三维数组,其形状为[样本数量, 时间步长, 特征数量]。vp_train = vp_train.reshape((vp_train.shape[0], n_in, or_dim))# 将测试集的输入数据vp_test重塑成三维格式。# 结果是一个三维数组,其形状为[样本数量, 时间步长, 特征数量]。vp_test = vp_test.reshape((vp_test.shape[0], n_in, or_dim))# 调用bitcn_bilstm_model函数来建立BiTCN-BiLSTM模型model = bitcn_bilstm_model()......

三,运行结果

 资源下载:https://download.csdn.net/download/vvoennvv/92324145

http://www.dtcms.com/a/617849.html

相关文章:

  • 番禺制作网站平台邢台123信息网
  • 网页制作软件有那些石家庄seo网站排名
  • 高级边界扫描 --6-- Silicon Nail测试调试
  • Linux 序列化技术、自定义协议实现及守护进程
  • 【Javaweb学习|黑马笔记|Day5】Web后端基础|java操作数据库
  • ArcGIS地统计综合实战 | 洛杉矶臭氧浓度预测-pretict-pretictable-pretiction
  • 【Agent零基础入门课程】告别黑盒:HelloAgents架构深度解析
  • PyTorch 零基础入门:从张量到 GPU 加速完全指南
  • Gradient Accumulation (梯度累积) in PyTorch
  • C++ 哈希表 常用接口总结 力扣 1. 两数之和 每日一题 题解
  • 百度云可以做网站吗wordpress文学模版
  • 数据库高可用架构-分表分库
  • C# 1116 流程控制 常量
  • ASC学习笔记0022:在不打算修改属性集时访问生成的属性集
  • 国外简约企业网站大连做环评网站
  • 【实际项目3】C#把文件夹中的RGB图片变为Gray图片
  • 学习C#调用OpenXml操作word文档的基本用法(7:Style类分析-5)
  • 【微服务】【Nacos 3】 ② 深度解析:AI模块介绍
  • 湖州网站seowordpress页面重定向
  • 10场景思考:OLAP系统在监控中的作用
  • 数据结构之二叉树-链式结构(下)
  • 云南省建设考试中心网站长春自助建站软件
  • ReALM(Retrieval-Augmented Language Model)介绍
  • 玩转Docker | Docker环境下部署JSON可视化管理工具JsonHero
  • 学院评估 网站建设整改wordpress 多条件搜索
  • 通信系统架构设计
  • C++_Bug:现代写法拷贝构造中 swap 写法之小坑
  • 通关upload-labs(14-21)加分析源码
  • 【目标检测】YOLOv10n-ADown弹孔检测与识别系统
  • 扬中网站推广导流网盘怎么做电影网站