# 交通量预测——极端情况下的预测算法

1. 模型的不确定性
2. 模型的错误识别
3. 固有噪声

## 3.1实验数据

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 = pd.DataFrame(data)
cols, names = list(), list()
# input sequence (t-n, ... t-1)
for i in range(n_in, 0, -1):
cols.append(df.shift(i))
names += [('var%d(t-%d)' % (j+1, i)) for j in range(n_vars)]
# forecast sequence (t, t+1, ... t+n)
for i in range(0, n_out):
cols.append(df.shift(-i))
if i == 0:
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)]
# put it all together
agg = pd.concat(cols, axis=1)
agg.columns = names
# drop rows with NaN values
if dropnan:
agg.dropna(inplace=True)
return agg

## 3.2实验模型

encoder_inputs = Input(shape=(train_X.shape[1], train_X.shape[2]))

encoder_lstm1 = LSTM((128), return_state=True,return_sequences=True)
encoder_outputs1, state_h1, state_c1 = encoder_lstm1(encoder_inputs)

drop_out1 = Dropout(0.05)

encoder_lstm2 = LSTM((64), return_state=True,return_sequences=False)
encoder_outputs2, state_h2, state_c2 = encoder_lstm2(encoder_outputs1)

drop_out2 = Dropout(0.05)

external_features = Input(shape=(6,))
print(external_features)

dense1 = Dense(128,activation='tanh')
temp = Concatenate(axis=1)([state_c2,external_features])
dense1_output = dense1(temp)

drop_out3 = Dropout(0.05)

dense2 = Dense(64,activation='tanh')
dense2_output = dense2(dense1_output)

drop_out4 = Dropout(0.05)

dense3 = Dense(16,activation='tanh')
dense3_output = dense3(dense2_output)

drop_out5 = Dropout(0.05)

dense4 = Dense(1,activation='tanh')
dense4_output = dense4(dense3_output)
model = Model(inputs=[encoder_inputs,external_features], outputs=dense4_output)

## fit network
input_list = []
input_list.append(train_X)
input_list.append(temp_train)
history = model.fit(input_list, train_y, epochs=1000, batch_size=10, validation_data=([test_X,temp_test], test_y), verbose=2,shuffle=False)

## 5.参考资料

using rnn encoder-decoder for statistical machine translation]( https://arxiv.org/abs/1409.12…深度学习如何估计模型不确定性(epistemic uncertainty)

### 关于我们

Mo（网址： momodel.cn ）是一个支持 Python 的 人工智能在线建模平台 ，能帮助你快速开发、训练并部署模型。

Mo 人工智能俱乐部是由网站的研发与产品设计团队发起、致力于降低人工智能开发与使用门槛的俱乐部。团队具备大数据处理分析、可视化与数据建模经验，已承担多领域智能项目，具备从底层到前端的全线设计开发能力。主要研究方向为大数据管理分析与人工智能技术，并以此来促进数据驱动的科学研究。