【RNN入门到实战】LSTM从入门到实战——实现空气质量预测

本文介绍了如何使用LSTM(长短期记忆网络)进行空气质量预测,涉及数据预处理、特征工程、模型构建以及使用动图演示LSTM的工作原理。通过处理气象数据并构建预测模型,评估了模型性能并展示了关键步骤和技术细节。
摘要由CSDN通过智能技术生成

动图演示

在这里插入图片描述

输出层门

​ 作用对象:隐层 h t h_t ht​

​ 作用:确定输出什么值。

​ 操作步骤:

​ 步骤一:通过sigmoid 层来确定细胞状态的哪个部分将输出。

​ 步骤二:把细胞状态通过 tanh 进行处理,并将它和 sigmoid 门的输出相乘,最终我们仅仅会输出我们确定输出的那部分。

其示意图如下所示:

在这里插入图片描述

动图演示

在这里插入图片描述

实战——使用LSTM实现空气质量预测

=============================================================================

数据来源自位于北京的美国大使馆在2010年至2014年共5年间每小时采集的天气及空气污染指数。

数据集包括日期、PM2.5浓度、露点、温度、风向、风速、累积小时雪量和累积小时雨量。原始数据中完整的特征如下:

1.No 行数

2.year 年

3.month 月

4.day 日

5.hour 小时

6.pm2.5 PM2.5浓度

7.DEWP 露点

8.TEMP 温度

9.PRES 大气压

10.cbwd 风向

11.lws 风速

12.ls 累积雪量

13.lr 累积雨量

我们可以利用此数据集搭建预测模型,利用前一个或几个小时的天气条件和污染数据预测下一个(当前)时刻的污染程度。

数据处理


首先,我们必须清洗数据。以下是原始数据集的前几行。

No year month day hour pm2.5 DEWP TEMP PRES cbwd Iws Is Ir

0 1 2010 1 1 0 NaN -21 -11.0 1021.0 NW 1.79 0 0

1 2 2010 1 1 1 NaN -21 -12.0 1020.0 NW 4.92 0 0

2 3 2010 1 1 2 NaN -21 -11.0 1019.0 NW 6.71 0 0

3 4 2010 1 1 3 NaN -21 -14.0 1019.0 NW 9.84 0 0

4 5 2010 1 1 4 NaN -20 -12.0 1018.0 NW 12.97 0 0

5 6 2010 1 1 5 NaN -19 -10.0 1017.0 NW 16.10 0 0

6 7 2010 1 1 6 NaN -19 -9.0 1017.0 NW 19.23 0 0

7 8 2010 1 1 7 NaN -19 -9.0 1017.0 NW 21.02 0 0

8 9 2010 1 1 8 NaN -19 -9.0 1017.0 NW 24.15 0 0

9 10 2010 1 1 9 NaN -20 -8.0 1017.0 NW 27.28 0 0

数据理清的步骤:

1、将year, month, day, hour四列整合为一个日期时间。

2、删除No列,这个列对于数据预测没有作用,如果有作用说明见鬼了。

3、将数据集中所有的NaN设置为0,NaN没有办法用来计算。

4、删除前24行,前24行的pm2.5没有记录,留着没有用。

完整的代码如下:

from pandas import read_csv

from datetime import datetime

load data

def parse(x):

return datetime.strptime(x, ‘%Y %m %d %H’)

读取数据,将year, month, day, hour四列合并成一列。

dataset = read_csv(‘raw.csv’, parse_dates = [[‘year’, ‘month’, ‘day’, ‘hour’]], index_col=0, date_parser=parse)

删除No列

dataset.drop(‘No’, axis=1, inplace=True)

修改列名

dataset.columns = [‘pollution’, ‘dew’, ‘temp’, ‘press’, ‘wnd_dir’, ‘wnd_spd’, ‘snow’, ‘rain’]

dataset.index.name = ‘date’

print(dataset)

将所有的NaN设置为0

dataset[‘pollution’].fillna(0, inplace=True)

删除前24行

dataset = dataset[24:]

浏览前5行数据

print(dataset.head(5))

save to file

dataset.to_csv(‘pollution.csv’)

加载了“pollut

  • 15
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Keras是一个Python深度学习库,可以方便地实现各种神经网络模型。其中,LSTM(长短时记忆)是一种特殊类型的循环神经网络(RNN),在序列数据处理和时间序列预测中十分常用。接下来,我们就来介绍一下如何使用Keras实战LSTM模型。 首先,我们需要安装Keras库,并导入所需的包: ``` !pip install keras import numpy as np from keras.models import Sequential from keras.layers import LSTM, Dense ``` 接下来,我们可以准备数据集。LSTM模型通常用于时间序列预测,在这里我们以一个简单的sin函数为例,生成一组时间序列数据作为输入和输出: ``` # 生成输入和输出数据 data = [] target = [] seq_length = 10 for i in range(1000): start = np.random.uniform(0, 2*np.pi) end = start + seq_length * 0.1 t = np.arange(start, end, 0.1) x = np.sin(t) y = np.sin(t+0.1) data.append(x) target.append(y) data = np.array(data) target = np.array(target) ``` 接下来,我们可以定义模型结构并进行训练: ``` # 定义模型结构 model = Sequential() model.add(LSTM(64, input_shape=(seq_length, 1))) model.add(Dense(1)) # 编译模型 model.compile(loss='mean_squared_error', optimizer='adam') # 训练模型 model.fit(data, target, epochs=10, batch_size=32) ``` 最后,我们可以使用训练好的模型进行预测: ``` # 使用模型预测 test_data = np.sin(np.arange(2*np.pi, 2*np.pi+seq_length*0.1, 0.1)) test_data = np.reshape(test_data, (1, seq_length, 1)) prediction = model.predict(test_data) ``` 以上就是使用Keras实战LSTM模型的基本步骤。你可以根据需要调整模型的参数和结构,进一步优化模型的性能。希望这个回答对你有帮助! ### 回答2: Keras是一个流行的Python深度学习库,它被广泛用于构建各种神经网络模型。其中,LSTM(长短期记忆网络)是一种特殊的循环神经网络架构,被广泛应用于处理序列数据。 在使用Keras进行LSTM实战时,我们可以按照以下步骤进行操作: 1. 数据预处理:首先,我们需要对输入数据进行预处理。这包括分割数据集为训练集和测试集,对数据进行标准化或归一化,以及将数据转换为适合LSTM模型的序列格式。 2. 构建LSTM模型:使用Keras的Sequential模型或函数式API构建LSTM模型。我们可以指定模型的层级结构、激活函数、dropout等参数,来实现我们想要的网络结构。 3. 编译模型:在编译模型之前,我们需要指定损失函数、优化器和评估指标。损失函数可以根据问题类型选择,优化器可以选择Adam或RMSprop等,并根据需求设置学习率等参数。 4. 模型训练:使用训练数据对构建的LSTM模型进行训练。使用Keras的fit()函数或fit_generator()函数可以指定训练数据、批量大小、训练周期数等参数,来完成模型的训练过程。 5. 模型评估:在完成模型训练后,可以使用测试数据对模型进行评估。通过调用evaluate()函数可以获取模型在测试数据上的损失值和评估指标值。 6. 模型预测:最后,我们可以使用训练好的LSTM模型进行预测。通过调用predict()函数,将输入数据传递给模型,可以获取模型预测的结果。 总结来说,使用Keras进行LSTM实战需要进行数据预处理、模型构建、编译模型、模型训练、模型评估和模型预测等步骤。Keras提供了简单且易于使用的API,使得LSTM实战变得更加高效和便捷。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值