A283-lstm模型实现温度预测
【购买前必看】
1、关于我们
深度学习乐园是由python哥全职技术团队组建运营【团队成员为:复旦大学博士、华东理工爱丁堡博士、格拉斯哥博士、纽约大学硕士、浙江大学硕士】。
我们只做python业务,精通sklearn机器学习/torch深度学习/django/flask/vue全栈开发。
2、关于项目
我们从2018年开始,就专注于深度学习sci、ei、ccf、kaggle等,至今已有7年,共发表过10多篇顶刊顶会。
官网累积了数百个项目,已有3000多学员付费购买,圈子内有口皆碑:www.zzgcz.com (更多高级私密项目无法对外,联系微信定制:zzgcz_com)
3、售后承诺
包远程安装调试,所有项目均在本地运行通过,大部分都有截图和录屏。
支持二次修改,所有项目都是我们自己写的,改起来也非常容易。
加急定制1-2天可完成,这就是实力证明,远程验收满意后再付全款!
所有客户终身售后。兼职的人家都有主业,谁愿意持续服务你?



- 导入库
包括用于数值计算的numpy和数据操作的pandas,用于绘图的matplotlib.pyplot,以及机器学习相关的scikit-learn和深度学习框架torch。使用了joblib库来保存和加载模型。
- 设置随机种子
为了确保实验结果的可复现性,定义了一个函数用于设置随机种子。这包括为numpy和torch设置固定的随机种子,并在使用GPU时设置CUDA的随机种子。这样可以确保每次运行程序时得到相同的结果。
- 数据预处理
3.1 加载数据
通过读取Excel文件来加载数据。数据文件包含多个列,但只选择了K_temp(温度)和up_time(时间)两列进行后续处理。
3.2 数据清洗
在数据清洗过程中,程序对温度数据进行处理,将所有负值取反,并筛选出温度小于50的数据。此外,数据还被限制在2024年1月1日之后的时间范围内,以确保数据的时效性和相关性。
3.3 时间格式转换与排序
up_time列被转换为日期时间格式,并按时间顺序排序。时间列被设置为数据框的索引,以便进行时间序列分析。
3.4 处理缺失值
检查数据中是否存在缺失值。如果发现缺失值,采用时间插值的方法进行填补,确保数据的连续性和完整性。
- 可视化与探索性分析
4.1 绘制温度时间序列图
生成温度随时间变化的曲线图
4.2 数据统计描述
通过统计分析,输出温度数据的基本统计特性,包括均值、标准差、最小值、最大值和四分位数等。这些统计信息有助于了解数据的分布和波动情况。
4.3 自相关分析
自相关图用于分析温度数据中的周期性和滞后效应。
- 特征工程
5.1 数据归一化
为了提升模型训练的效率和效果,对温度数据进行了归一化处理,将其缩放到[0,1]的范围内。
5.2 构建序列数据
程序将时间序列数据转换为监督学习问题。具体做法是设定一个序列长度(例如24小时)作为输入,预测下一时刻的温度。这种方式适用于LSTM模型对时间序列数据的处理需求。
5.3 数据集划分
数据被划分为训练集和测试集,90%的数据用于训练,10%的数据用于测试
5.4 转换为Torch张量
为了在深度学习框架中进行处理,程序将数据转换为torch张量。这一步骤是后续模型训练和评估的基础。
- 自定义数据集
定义了一个自定义的数据集类,用于加载和管理温度数据。该类实现了数据集的长度和数据项的获取方法,便于在训练过程中进行批量数据加载。
- 模型定义
7.1 LSTM模型结构
模型基于LSTM神经网络构建,包含若干层LSTM单元和一个全连接层。LSTM层负责处理序列数据,捕捉时间依赖性;全连接层则将LSTM的输出转换为最终的预测值。
7.2 前向传播
在前向传播过程中,模型初始化隐藏状态和细胞状态,依次处理输入序列。最终,只取最后一个时间步的输出进行预测,以获得对下一时刻温度的预测结果。
- 模型训练
训练过程包括前向传播、损失计算、反向传播和参数更新。程序使用均方误差(MSE)作为损失函数,并采用Adam优化器来调整模型参数。每个训练轮次(epoch)结束后,程序会记录并输出当前的训练损失。
- 模型评估
模型评估不仅计算平均损失,还会生成预测值和真实值的对比结果。这些结果用于计算模型的性能指标,如均方根误差(RMSE)和平均绝对误差(MAE),以全面衡量模型的预测效果。
- 模型调参
10.1 参数网格
为了找到最优的模型参数,程序采用网格搜索的方法,设定不同的参数组合。例如,隐藏单元数、层数、批量大小、学习率和训练轮数等。
10.2 训练与评估
对于每组参数组合,模型会在训练集上进行训练,并在验证集上评估性能。最终,选择验证集RMSE最低的参数组合作为最佳参数,以提升模型的预测精度。
- 模型导出与加载
11.1 保存模型
训练完成后,将模型的参数和数据归一化的Scaler保存到指定路径。这便于后续在实际应用中加载和使用训练好的模型。
11.2 加载模型
加载已保存模型和Scaler的功能