PM2.5数据集LSTM实现预测
数据集说明
本实验采用的PM2.5空气质量数据集来自UCI公共数据集网站,包含了一系列与空气质量有关的天气数据,此数据集为多变量时间序列,每个记录的间隔为一小时,实例数量为43824条,其中前24条未在数据集中使用。该数据集是从2010年初到2014年底收集的美国驻华使馆的空气质量数据,在此实验中选择了具有实值的43800条作为实验数据,预测的因变量值为PM2.5这个属性。
主要步骤
实验过程主要分为以下几步:
- 读取数据文件。
- 时间序列数据转化为监督学习问题,并进行数据归一化。
- 去除在本实验中无用的列。
- 数据集分为测试集和训练集,以及验证集。
- Keras与tensorflow训练单层LSTM网络。
- 用测试集进行预测。
- 数据反归一化。
- MAE (Mean Absolute Error,平均绝对误差)与RMSE(Root Mean Squared Error, 均方根误差)对训练集的预测结果进行评估。
- 通过图像与真实值的曲线作对比。
环境
Keras:2.3.1, Tensorflow:2.1.0,python3.7
全部代码
//都是机器学习常用最新的工具包
from math import sqrt
from numpy import concatenate
from matplotlib import pyplot
from pandas import read_csv
from pandas import DataFrame
from pandas import concat
from sklearn.preprocessing import MinMaxScaler
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
转化为监督数据
def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):
n_vars = 1 if type(data) is list else data.shape[1]
df = DataFrame(data)
cols, names = list(), list()
for i in range(n_in, 0, -1):
cols.append(df.shift(i))
names +=