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

时序最佳入门代码|基于pytorch的LSTM天气预测及数据分析

前言

在本篇文章,我们基于pytorch框架,构造了LSTM模型进行天气预测,并对数据进行了可视化分析,非常值得入门学习。该数据集提供了2013年1月1日至2017年4月24日在印度德里市的数据。其中包含的4个参数是平均温度(meantemp)、湿度(humidity)、风速(wind_speed)和平均气压(meanpressure),以下是特征的描述:

数据集和完整可用的代码可以在后台回复"代码04"获取。

数据可视化

我们自定义的可视化函数,用于绘制每个特征的分布,首先绘制箱线图:

def box_plot(self):graph_lsts = []for i, element in enumerate(self.data.transpose()):graph_lst = go.Box(y = element,name = self.box_title,boxpoints = 'outliers',line = dict(width=1))    graph_lsts.append(graph_lst)fig = self.make_subplot(graph_lsts)fig.update_layout(title=self.box_title,xaxis_title='Columns',yaxis_title='Values',template = 'simple_white')fig.show()

我们继续绘制折线图

#################### 2. Line Plot ######################    def line_plot(self):        line_lsts = []        for i, element in enumerate(self.data.transpose()):            line = go.Scatter(x = self.date,                               y = element,                               mode = 'lines',                               name = self.line_title)            line_lsts.append(line)        fig = self.make_subplot(line_lsts)        fig.update_layout(title=self.line_title,                          xaxis_title='Columns',                          yaxis_title='Values',                          template = 'simple_white')        fig.show()

图片

从可视化的折线图我们可以观察到,训练集中存在异常值,比如在'风速'和'平均气压'数据列中,一些数据点明显是离群的。

模型构建

受限于篇幅,我们这里只给出LSTM模型的代码,完整代码和数据可在公众号后台获取。模型结构非常简单,是一个两层的LSTM, 隐藏层大小为128。

class LSTMModel(nn.Module):    def __init__(self):        super().__init__()        self.lstm = nn.LSTM(input_size = 6,                             num_layers = 2,                            hidden_size = 128,                              batch_first = True,                             bidirectional= True)                self.dropout = nn.Dropout(0.2)        self.linear1 = nn.Linear(128*2, 64)         self.linear2 = nn.Linear(64, 8)         self.output_linear = nn.Linear(8, 1)            def forward(self, x):          x, _ = self.lstm(x)        x = self.dropout(x)        x = self.linear1(x)        x = self.linear2(x)        x = self.output_linear(x)        return x

定义好模型后,我们可以进行模型的训练和评估,以下是训练好后,绘制的预测值和原始值可视化展示。

图片

图片

我们模型的 RMSE值: 2.75

np.sqrt(mean_squared_error(eval_df.iloc[7:]['real_meantemp'], eval_df.iloc[7:]['pred_meantemp']))

  欢迎大家关注我的公众号【科学最top】,专注于时序高水平论文解读,回复‘论文2024’可获取,2024年ICLR、ICML、KDD、WWW、IJCAI五个顶会的时间序列论文整理列表和原文。

http://www.lryc.cn/news/439390.html

相关文章:

  • 85-MySQL怎么判断要不要加索引
  • 车载软件架构 --- SOA设计与应用(中)
  • MATLAB求解微分方程和微分方程组的详细分析
  • Sybase「退役」在即,某公共卫生机构如何实现 SAP Sybase 到 PostgreSQL 的持续、无缝数据迁移?
  • 如何通过Chrome浏览器轻松获取视频网站的TS文件
  • Linux下进程间的通信--共享内存
  • Big Data 流处理框架 Flink
  • 校园水电费管理微信小程序的设计与实现+ssm(lw+演示+源码+运行)
  • HashMap线程不安全|Hashtable|ConcurrentHashMap
  • 01 会计概述
  • 开放式激光振镜运动控制器在Ubuntu+Qt下的文本标刻
  • 推荐3款AIai论文大纲一键生成文献,精选整理!
  • 数据库之索引<保姆级文章>
  • 多维时序 | Matlab基于BO-LSSVM贝叶斯优化最小二乘支持向量机数据多变量时间序列预测
  • Netty笔记03-组件Channel
  • 1----安卓机型修复串码 开启端口 檫除基带 支持高通与MTK机型工具预览与操作解析
  • Docker容器技术1——docker基本操作
  • ElasticSearch介绍+使用
  • Redis——常用数据类型List
  • 前端基础知识+算法(一)
  • photozoom classic 9解锁码2024年最新25位解锁码
  • Oracle发邮件功能:设置的步骤与注意事项?
  • 优化理论及应用精解【9】
  • nginx实现https安全访问的详细配置过程
  • 1. TypeScript基本语法
  • C# UDP与TCP点发【速发速断】模式
  • pikachu下
  • Go语言开发im-websocket服务和vue3+ts开发类似微信pc即时通讯
  • Redis如何实现分布式锁
  • 面向对象程序设计之继承(C++)