lstm对时间数据的预测作用(多变量对多变量预测)

思考:

  • 如何处理原始数据,空值?无意义列?数据归一化?异常值?
  • 时序数据预测问题的数据格式如何构造(X,Y);
  • 如何使用LSTM来预测时序数据(输入输出?多加几成lstm注意什么?return_sequences=True?);
  • 如何用模型预测?生成结果注意什么?反归一化再进行比较。
  • 归(反归)一化注意什么?
  • 模型参数如何调整?例如:学习率如何调整?

1.使用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 累积雨量在这里插入图片描述

2.数据预处理

1. 数据清洗

  • 将日期(年月日时)合并为一个日期,并作为表的索引
  • 删除没有意义的NO列
  • 为列名重起好理解的名字
  • 空值处理(NA),充填0
  • 观察到2010年1月1日pm2.5为NA,将该天数据删除
  • 形成一个新表

导入包

#导入用到的包
import pandas as pd
from datetime import datetime
from matplotlib import pyplot
from sklearn.preprocessing import LabelEncoder, MinMaxScaler
from sklearn.metrics import mean_squared_error
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM, Dropout
from numpy import concatenate
from math import sqrt
from keras.callbacks import ReduceLROnPlateau

数据清洗(详细注释):

def parse(x):
    return datetime.strptime(x, '%Y %m %d %H')
def read_raw():
    dataset = pd.read_csv('raw.csv', parse_dates=[['year', 'month', 'day', 'hour']], index_col=0, date_parser=parse)  #将日期合并
    dataset.drop('No', axis=1, inplace=True)   #删除no列(无意义)
    # manually specify column names
    dataset.columns = ['pollution', 'dew', 'temp', 'press', 'wnd_dir', 'wnd_spd', 'snow', 'rain']  #给每列换个好理解的名
    dataset.index.name = 'date'   #行的索引名为name,解析得到的日期格式列会作为DataFrame的第一列。则此时会以新生成的time_date列而不是name作为Index。因此保险的方法是指定列名,如index_col = 'name'

    # mark all NA values with 0
    dataset['pollution'].fillna(0, inplace=True)
    # drop the first 24 hours
    dataset = dataset[24:]     #删除第一天的数据,取列表24行之后的数据
    # summarize first 5 rows
    print(dataset.head(5))
    # save to file
    dataset.to_csv('pollution.csv')

形成的数据格式:
在这里插入图片描述

2.对每列数据进行绘图观测(5年数据),除了日期。
绘图代码:

def drow_pollution():
    dataset = pd.read_csv('pollution.csv', header=0, index_col=0)
    values = dataset.values   
  • 12
    点赞
  • 94
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值