介绍
该实验使用了ConvLSTM模型,对伦敦地区的空气质量进行了时序预测。数据集来源于开源库openair。实验的目标是预测Bloomsbury的空气污染物数值。同时,也利用了Harlington, North Kensington, Marylebone 和Eltham这四个空气质量监测站的数据作为辅助预测。数据的属性有8个,分别为:NOX, NO2, NO, O3, PM2.5, 风速,风向和空气温度。
除了使用ConvLSTM, 该实验还使用了普通LSTM, BiLSTM, Attention+LSTM, LightGBM 和ARIMA进行预测。具体内容可以在github上进行查看:air_pollutants_prediction_lstm。
算法实施
导入数据
假定Marylebone Road监测站的数据出现异常,此时我们用Bloomsbury, Eltham, Harlington和N_Kensington的数据来推断Marylebone的数据。该实验是多变量预测单变量。分多次预测,实现多变量预测多变量。
#读取数据,数据已经清洗过了。
Marylebone_Road=pd.read_csv('/content/drive/My Drive/air_inference/data/Marylebone_Road_clean.csv')
Bloomsbury=pd.read_csv('/content/drive/My Drive/air_inference/data/Bloomsbury_clean.csv')
Eltham=pd.read_csv('/content/drive/My Drive/air_inference/data/Eltham_clean.csv')
Harlington=pd.read_csv('/content/drive/My Drive/air_inference/data/Harlington_clean.csv')
N_Kensington=pd.read_csv('/content/drive/My Drive/air_inference/data/N_Kensington_clean.csv')
只选取我们想要的数据属性,NOX, NO2, NO, O3, PM2.5, 风速,风向和空气温度。
Marylebone_Road=Marylebone_Road[['nox','no2','no','o3','pm2.5','ws','wd','air_temp']]
Bloomsbury=Bloomsbury[['nox','no2','no','o3','pm2.5','ws','wd','air_temp']]
Eltham=Eltham[['nox','no2','no','o3','pm2.5','ws','wd','air_temp']]
Harlington=Harlington