Python時間序列LSTM預測系列教程(7)-多變量

多變量LSTM預測模型(1)



空氣污染預測案例


數據格式


No year month day hour pm2.5 DEWP TEMP PRES cbwd Iws Is Ir
1 2010 1 1 0 NA -21 -11 1021 NW 1.79 0 0
2 2010 1 1 1 NA -21 -12 1020 NW 4.92 0 0
3 2010 1 1 2 NA -21 -11 1019 NW 6.71 0 0
4 2010 1 1 3 NA -21 -14 1019 NW 9.84 0 0
5 2010 1 1 4 NA -20 -12 1018 NW 12.97 0 0
6 2010 1 1 5 NA -19 -10 1017 NW 16.1 0 0
7 2010 1 1 6 NA -19 -9 1017 NW 19.23 0 0
8 2010 1 1 7 NA -19 -9 1017 NW 21.02 0 0
9 2010 1 1 8 NA -19 -9 1017 NW 24.15 0 0

  1. No: 行標
  2. year
  3. month
  4. day
  5. hour
  6. pm2.5: PM2.5 濃度
  7. DEWP零點溫度
  8. TEMP: 溫度
  9. PRES: 壓力
  10. cbwd: 結合風向
  11. Iws: 累積風速
  12. Is: 累積雪量
  13. Ir: 累積雨量

數據準備

1、刪除“No”列,因爲沒用
2、刪除最開始的24小時數據,因爲PM值全是NA
3、將之後的數據中出現的NA全部替換成0

預處理
# coding=utf-8                                                                                                                     
 
from pandas import read_csv
from pandas import datetime
 
def parser(x):
    return datetime.strptime(x, '%Y %m %d %H')
 
dataset = read_csv('data_set/air_pollution.csv', parse_dates=[['year', 'month', 'day', 'hour']], index_col=0, date_parser=parser)
dataset.drop('No', axis=1, inplace=True)#axis=1,刪除列;inplace=True,直接在原DataFrame上執行刪除
 
#手動設置每一列的label
dataset.columns = ['pollution', 'dew', 'temp', 'press', 'wnd_dir', 'wnd_spd', 'snow', 'rain']
dataset.index.name = 'date'
#將NA替換爲0
dataset['pollution'].fillna(0, inplace=True)
#刪除最開始的24條數據
dataset = dataset[24:]
print dataset.head()
 
#保存處理後數據
dataset.to_csv('data_set/air_pollution_new.csv')

數據輸出
# coding=utf-8                      
#輸出數據曲線                       
#------------                       
from pandas import read_csv         
from matplotlib import pyplot       
          
dataset =  read_csv('data_set/air_pollution_new.csv', header=0, index_col=0)
values = dataset.values             
          
#需要輸出的列                       
groups = [i for i in range(8)]      
groups.remove(4)#刪除值4,因爲是字符串
 
i=1
#輸出列曲線圖
pyplot.figure()
for group in groups:
    pyplot.subplot(len(groups), 1, i)#創建len(gourps)行,1列的子圖,表示在第i個子圖畫圖
    pyplot.plot(values[:,group])
    pyplot.title(dataset.columns[group], y=0.5, loc='right')
    i+=1                                                                                                                           
pyplot.show()









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章