利用Tensorflow里的LSTM对北京PM2.5数据集Beijing PM2.5 Data Data Set进行预测

课程作业。

数据集:Beijing PM2.5 Data Data Set

这个数据集里有北京2010-2014的天气数据。每小时一条,适合用于回归模型。


这里我对数据进行了标准化处理


在学习LSTM的时候这两篇文章给了我很大帮助:

http://karpathy.github.io/2015/05/21/rnn-effectiveness/

https://www.zybuluo.com/hanbingtao/note/581764


直接上代码,代码很大程度上参考了某篇博文,在这里暂时找不到原代码链接了,以后有机会再补上。

# -*- coding: utf-8 -*-
"""
Created on Wed Jun  6 10:56:52 2018

@author: Administrator
"""

import tensorflow as tf
import pandas as pd
import numpy as np
import csv

tf.reset_default_graph()

rnn_unit = 50       #the amount of hidden lstm units
batch_size = 72     #the amount of data trained every time
input_size = 8      #size of input
output_size = 1     #size of output
lr = 0.006           #learn rate
train_x, train_y = [], []   #

f = open('C:\\Users\\Adminis
  • 4
    点赞
  • 67
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
在MATLAB中,可以使用LSTM网络进行多步PM2.5预测。以下是一个简单的代码示例: ```matlab % 导入数据 data = csvread('data.csv', 1, 0); % 假设数据文件中第一行是标题,从第二行开始是数据 train_ratio = 0.8; % 将80%的数据用于训练,其余用于测试 train_num = floor(size(data, 1) * train_ratio); train_data = data(1:train_num, :); test_data = data(train_num+1:end, :); % 预处理数据 X_train = []; Y_train = []; for i = 12:size(train_data, 1) % 每12个小时作为一组输入 X_train = [X_train; train_data(i-11:i-1, 1:5)]; Y_train = [Y_train; train_data(i, 5)]; end X_test = []; Y_test = []; for i = 12:size(test_data, 1) % 每12个小时作为一组输入 X_test = [X_test; test_data(i-11:i-1, 1:5)]; Y_test = [Y_test; test_data(i, 5)]; end % 构建LSTM网络 numFeatures = 5; % 输入特征数 numResponses = 1; % 输出特征数 numHiddenUnits = 200; % 隐藏单元数 layers = [ ... sequenceInputLayer(numFeatures) lstmLayer(numHiddenUnits) fullyConnectedLayer(numResponses) regressionLayer]; options = trainingOptions('adam', ... 'MaxEpochs', 100, ... 'GradientThreshold', 1, ... 'InitialLearnRate', 0.001, ... 'LearnRateSchedule', 'piecewise', ... 'LearnRateDropFactor', 0.1, ... 'LearnRateDropPeriod', 10, ... 'MiniBatchSize', 128, ... 'Verbose', 0); % 训练网络 net = trainNetwork(X_train', Y_train', layers, options); % 预测 YPred = []; X = X_test(1, :)'; for i = 1:size(X_test, 1)/12 YPred = [YPred; predict(net, X')]; X = [X_test(i*12, 1:4)'; YPred(end)]; end % 可视化结果 figure plot(Y_test) hold on plot(YPred) legend('真实值', '预测值') xlabel('样本序号') ylabel('PM2.5值') ``` 在上面的代码中,我们首先导入数据并将其分为训练集和测试集。然后,我们将数据预处理为每12个小时作为一组输入,每组输入包含前11个小时的PM2.5数据和其他4个特征数据。接下来,我们构建了一个包含LSTM层和完全连接层的网络,并使用ADAM优化器进行训练。在训练完成后,我们使用网络对测试集进行预测,并将结果可视化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值