天池比赛-资金流入流出预测--利用rnn神经网络预测9月份的利率

之前一直用的是状态空间模型来预测利率,然后在知乎上看到时间序列预测用神经网络预测有奇效。下面就是用rnn(循环神经网络)来进行时间预测的过程。

一:将数据化为同一个单位,即标准化。

  values=date_interest.values
    values=values.astype('float32')
    scaler=MinMaxScaler(feature_range=(0,1))
    scaled=scaler.fit_transform(values)

这里我们用的是MinMaxScaler来对数据进行规范化。

二.对数据进行窗口分割,即确定用几个time steps去预测数据

 dataX,dataY=[],[]
    for i in range(len(dataset)-look_back-1):
        a=dataset[i:(i+look_back)]
        # 特征是长度为look_back的序列
        dataX.append(a)
        # 结果
        dataY.append(dataset[i+look_back])
    return np.array(dataX),np.array(dataY)

look_back就是用多少个数据去预测下一个数据。dataX相当于是特征,dataY则是标签。

三。切割数据集成训练集和测试集

 count=len(data_x)
    # 分割成训练集和测试集
    train_X,train_y=data_x[:int(0.8*count)],data_y[:int(0.8*count)]
    test_X,test_y=data_x[int(0.8*count):],data_y[int(0.8*count):]

四。对数据进行格式化,reshape成[样本,时间步长,特征]的形式

 train_X=train_X.reshape((train_X.shape[0],1,train_X.shape[1]))
    test_X=test_X.reshape((test_X.shape[0],1,test_X.shape[1]))

五。构建模型

  model=Sequential()
    # # 定义具有50个神经元的LSTM和用于预测污染的输出层中的一个神经元。
    model.add(LSTM(50,input_shape=(train_X.shape[1],train_X.shape[2])))
    model.add(Dense(1))
    # # optimizer指定其优化器adam,loss指定误差规则,即平均绝对误差。
    model.compile(loss='mae',optimizer='adam')

这里用的是LSTM来预测,也可以用rnn的其他变形。

六。利用模型预测

 predict=model.predict(test_x)

上述就是利用rnn来进行时间序列预测的简单过程,详细过程可以参考:点击打开链接

你可能感兴趣的:(python)