Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >时序最佳入门代码|基于pytorch的LSTM天气预测及数据分析

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

作者头像
科学最Top
发布于 2024-09-18 08:52:39
发布于 2024-09-18 08:52:39
634716
代码可运行
举报
文章被收录于专栏:科学最Top科学最Top
运行总次数:16
代码可运行

前言

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

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

数据可视化

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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()

我们继续绘制折线图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#################### 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。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
np.sqrt(mean_squared_error(eval_df.iloc[7:]['real_meantemp'], eval_df.iloc[7:]['pred_meantemp']))
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科学最Top 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
7 条评论
热度
最新
代码04
代码04
回复回复点赞举报
04
04
回复回复点赞举报
代码04
代码04
回复回复点赞举报
代码04
代码04
回复回复点赞举报
代码04
代码04
回复回复点赞举报
代码04
代码04
回复回复点赞举报
代码04
代码04
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
从RNN循环神经网络到Transformer注意力机制:解析神经网络架构的华丽蜕变
在自然语言处理和序列建模领域,神经网络架构经历了显著的演变。从早期的循环神经网络(RNN)到现代的Transformer架构,这一演变代表了深度学习方法在处理序列数据方面的重大进步。本文将深入比较这两种架构,分析它们的工作原理、优缺点,并通过实验结果展示它们在实际应用中的性能差异。
熊猫钓鱼
2025/08/01
1280
从RNN循环神经网络到Transformer注意力机制:解析神经网络架构的华丽蜕变
50行Python代码绘制数据大屏,这个可视化框架真的太神了
今天小编来为大家安利另外一个用于绘制可视化图表的Python框架,名叫Dash,建立在Flask、Plotly.js以及React.js的基础之上,在创建之出的目的是为了帮助前端知识匮乏的数据分析人员,以纯Python编程的方式快速制作出交互特性强的数据可视化大屏,在经过多年的迭代发展,如今不仅仅可以用来开发在线数据可视化作品,即便是轻量级的数据仪表盘、BI应用甚至是博客或者是常规的网站都随处可见Dash框架的影子,今天小编就先来介绍一下该框架的一些基础知识,并且来制作一个简单的数据可视化大屏。
用户6888863
2022/06/08
2.5K0
50行Python代码绘制数据大屏,这个可视化框架真的太神了
Plotly,一个超强的Python可视化库!
数据可视化是数据分析和探索的一个重要方面,它有助于深入了解数据集中的潜在模式、趋势和关系。
小F
2023/12/21
9760
Plotly,一个超强的Python可视化库!
深入了解 Plotly 高级技术,附实用代码示例
数据可视化是数据分析和探索中至关重要的一部分,能够帮助我们更深入地理解数据集中的潜在模式、趋势和关系。Plotly是一个功能强大、用途广泛的Python库,提供了多种工具用于创建交互式、视觉上引人入胜的图表。在本文中,我们将深入探索Plotly的世界,通过高级Python代码示例来探索其特性和功能。
数据STUDIO
2024/04/11
1.2K0
深入了解 Plotly 高级技术,附实用代码示例
深度学习 | 时序问题LSTM入门讲解
Recurrent Neural NetWork (RNN) 用于处理序列数据,序列数据预测模型的特点是某一步的输出不仅依赖于这一步的输入,还依赖于其他步的输入或输出。传统的序列数据机器学习模型有Hidden Markov Model (隐马尔可夫模型)、Conditional Random Field (条件随机场)。近年来,深度学习模型又带来了RNN,标准RNN结构极为简单,只有一个tanh层,其模型结构见图1。
郭好奇同学
2021/07/30
2.9K0
深度学习 | 时序问题LSTM入门讲解
平滑时间序列数据,别再用移动平均线了
本文将解释为什么Savitzky-Golay滤波器能够比移动平均线更好地平滑时间序列数据,并附带Python代码示例。
数据STUDIO
2024/08/01
6320
平滑时间序列数据,别再用移动平均线了
深入探索 Plotly-打造交互式数据可视化的终极指南
文章链接:https://cloud.tencent.com/developer/article/2466316
一键难忘
2024/11/22
1.1K0
使用PyTorch-LSTM进行单变量时间序列预测的示例教程
时间序列是指在一段时间内发生的任何可量化的度量或事件。尽管这听起来微不足道,但几乎任何东西都可以被认为是时间序列。一个月里你每小时的平均心率,一年里一只股票的日收盘价,一年里某个城市每周发生的交通事故数。在任何一段时间段内记录这些信息都被认为是一个时间序列。对于这些例子中的每一个,都有事件发生的频率(每天、每周、每小时等)和事件发生的时间长度(一个月、一年、一天等)。
数据STUDIO
2023/02/24
2.4K0
使用PyTorch-LSTM进行单变量时间序列预测的示例教程
探索Plotly实现交互式数据可视化的未来趋势
在数据科学和数据分析领域,可视化是一种强大的工具,可以帮助我们理解数据、发现模式并传达见解。传统的静态图表在展示数据方面有一定局限性,而交互式数据可视化则为我们提供了更丰富、更具互动性的体验。在这篇文章中,我们将探索 Plotly 这一强大的 Python 可视化库,了解其如何实现交互式数据可视化,并探讨其在数据分析中的新前景。
一键难忘
2024/06/28
3710
数据科学家赚多少?基于pandasql和plotly的薪资分析与可视化 ⛵
图片 本文揭秘全球数据科学岗位的薪资分布情况!以及分析岗位、国家、工作经验、雇佣形式、公司规模对薪资的影响,并贴心提供了求职建议和跳槽Tips! 💡 作者:韩信子@ShowMeAI 📘 数据分析实战系列:https://www.showmeai.tech/tutorials/40 📘 AI 岗位&攻略系列:https://www.showmeai.tech/tutorials/47 📘 本文地址:https://www.showmeai.tech/article-detail/402 📢 声明:版权所有,
ShowMeAI
2022/12/09
1.2K0
数据科学家赚多少?基于pandasql和plotly的薪资分析与可视化 ⛵
高级可视化神器plotly的4个使用技巧
最近用plolty绘制了很多的动态可视化图形,有一定自定义的图形设置技巧,供大家参考学习。
皮大大
2024/06/04
1.2K0
利用Python的Plotly库创建交互式数据可视化
在数据科学和数据可视化领域,交互式图形可视化是一种强大的工具,能够帮助用户更好地理解数据并进行探索性分析。Python中有许多强大的工具和库可用于创建交互式图形,其中之一就是Plotly库。Plotly库提供了丰富的功能和灵活的接口,使得创建各种类型的交互式图形变得简单而直观。本文将介绍如何使用Plotly库来创建交互式图形,并提供一些代码实例来演示其强大的功能。
一键难忘
2024/07/08
1.2K0
通过一个时序预测案例来深入理解PyTorch中LSTM的输入和输出
总共有七个参数,其中只有前三个是必须的。由于大家普遍使用PyTorch的DataLoader来形成批量数据,因此batch_first也比较重要。LSTM的两个常见的应用场景为文本处理和时序预测,因此下面对每个参数我都会从这两个方面来进行具体解释。
Cyril-KI
2022/11/01
4.2K0
通过一个时序预测案例来深入理解PyTorch中LSTM的输入和输出
Kaggle系列-Tweet Sentiment Extraction第一名方案
“My ridiculous dog is amazing。” [sentiment:positive]
致Great
2021/01/18
1.2K0
Kaggle Jigsaw文本分类比赛方案总结
这个比赛是一个文本分类的比赛,这个比赛目标是在给定文本中判断是否为恶意评论即01分类。训练数据还给了其他多列特征,包括一些敏感词特征还有一些其他指标评价的得分特征。测试集没有这些额外的特征只有文本数据。
致Great
2021/01/13
9650
如何使用Python和Plotly绘制3D图形的方法
在数据可视化领域,三维图形是一种强大的工具,可以展示数据之间的复杂关系和结构。Python语言拥有丰富的数据可视化库,其中Plotly是一款流行的工具,提供了绘制高质量三维图形的功能。本文将介绍如何使用Python和Plotly来绘制各种类型的3D图形,并给出代码实例。
一键难忘
2024/07/08
8620
互联网新闻情感分析
赛题简介:“互联网新闻情感分析”赛题,是CCF大数据与计算智能大赛赛题之一。对新闻情绪进行分类,0代 表正面情绪、1代表中性情绪、2代表负面情绪。(赛题官网https://www.datafountain.cn/competitions/350)
Defu Li
2019/09/16
3K7
互联网新闻情感分析
Python|Plotly数据可视化(代码+应用场景)
数据可视化作为数据分析最直接的结果呈现方式,了解其制作方式和应用场景是很有必要的,本文来了解一下各个图标的应用场景及代码实现。
数据山谷
2022/05/31
3.5K0
Python|Plotly数据可视化(代码+应用场景)
霍尔特-温特斯的时间序列预测
我们讨论一组非常知名的预测模型,指数平滑。指数平滑的基本原则是将更多的权重放在最近的观测值上,而在历史观测值上放置更少的权重,以用来预测时间序列。
磐创AI
2024/04/03
8170
霍尔特-温特斯的时间序列预测
用Seaborn实现高级数据分析与可视化
今日推荐:零基础入门Hadoop:IntelliJ IDEA远程连接服务器中Hadoop运行WordCount
一键难忘
2024/11/18
4360
推荐阅读
相关推荐
从RNN循环神经网络到Transformer注意力机制:解析神经网络架构的华丽蜕变
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验