Python时间序列LSTM预测系列教程(8)-多变量

来源:互联网 发布:潍柴动力网络测评答案 编辑:程序博客网 时间:2024/05/17 08:31

多变量LSTM预测模型(2)


教程原文链接

前置教程:

Python时间序列LSTM预测系列教程(7)-多变量


LSTM数据预处理


1、转换成有监督数据
用历史的污染数据、天气数据预测当前时刻的污染值
2、数据归一化

# coding=utf-8                                                                                                                    from pandas import read_csvfrom pandas import DataFramefrom sklearn.preprocessing import MinMaxScalerfrom pandas import concatfrom sklearn.preprocessing import LabelEncoder #转换成有监督数据def series_to_supervised(data, n_in=1, n_out=1, dropnan=True):#n_in,n_out相当于lag    n_vars = 1 if type(data) is list else data.shape[1]#变量个数    df = DataFrame(data)    print '带转换数据'    print df.head()    cols, names = list(), list()    #输入序列(t-n. ... , t-1)    for i in range(n_in, 0, -1):        cols.append(df.shift(i))        print 'shift数据'        print cols[0][0:5]        names+=[('var%d(t-%d)'%(j+1,i)) for j in range(n_vars)]        print 'names数据'                 print names[0:5]              #预测序列(t, t+1, ... , t+n)      for i in range(0, n_out):             cols.append(df.shift(-i))         if i==0:#t时刻            names+=[('var%d(t)'%(j+1)) for j in range(n_vars)]        else:             names+=[('var%d(t+%d)'%(j+1,i)) for j in range(n_vars)]    #拼接     agg = concat(cols, axis=1)        print '拼接'    print agg[0:5]    agg.columns = names;              #将空值NaN行删除    if dropnan:         agg.dropna(inplace=True)      return agg      dataset =  read_csv('data_set/air_pollution_new.csv', header=0, index_col=0)values = dataset.values           print '原始数据'print values[0:5]       #由于4列的风向是标签,编码成整数encoder = LabelEncoder()#简单来说 LabelEncoder 是对不连续的数字或者文本进行编号values[:,4] = encoder.fit_transform(values[:,4])print '标签编码'print values[0:5]#使所有数据是float类型values = values.astype('float32')#数据归一化scaler = MinMaxScaler(feature_range=(0,1))scaled = scaler.fit_transform(values)print '缩放'print scaled[0:5]#变成有监督reframed = series_to_supervised(scaled, 1, 1)print '有监督'print reframed[0:5]#删除不预测的列reframed.drop(reframed.columns[9:16], axis=1, inplace=True)print '删除不预测的列'print(reframed.head())


阅读全文
0 0
原创粉丝点击