基于python和ANN的多步预报无意义有效期

2024-04-20 05:39:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着通过ANN提前n天预测。培训和测试阶段的结果是完美的,但验证阶段是没有意义的。有什么建议吗?你知道吗

数据:

    X_train[5:]
     [[ 1.  2.  3.  4.  5.]
     [ 2.  3.  4.  5.  6.]
     [ 3.  4.  5.  6.  7.]
     [ 4.  5.  6.  7.  8.]
     [ 5.  6.  7.  8.  9.]]
    y_train[5:]
     [ 6  7  8  9 10]

    X_test[5:]
     [[700. 701. 702. 703. 704.] 
     [701. 702. 703. 704. 705.]
     [702. 703. 704. 705. 706.]
     [703. 704. 705. 706. 707.]
     [704. 705. 706. 707. 708.]]
    y_test[5:]
     [ 705 706 707 708 709]

摘要代码:

model = Sequential()
model.add(Dense(units=200, input_shape=X_train.shape[1:]))
model.add(BatchNormalization())
model.add(Activation(activation='relu'))
model.add(Dropout(0.2))
# Second Hidden Layer
model.add(Dense(units=80))
model.add(BatchNormalization())
model.add(Activation(activation='relu'))
model.add(Dropout(0.2))
# Output Layer
model.add(Dense(units=1, activation='relu'))
# Training the model
optimizer = keras.optimizers.adam(lr=1e-2, decay=1e-4)
model.compile(optimizer=optimizer, loss='mean_squared_error') 
history= model.fit(X_train, y_train, epochs=300, batch_size=256, verbose=0, validation_data=(X_test, y_test))  

# Forecast
yhat_train = model.predict(X_train, verbose=0)
yhat_test = model.predict(X_test, verbose=0)

ValidDataSet=np.append (X_train, X_test)

# Rolling-forecast scenario, also called walk-forward model validation
for n_phase in range(0,n_valid): 
    yhat_valid = model.predict(ValidDataSet, verbose=0)
    Forecast = yhat_valid[-1]
    ValidDataSet = np.append (predValidToAdd, yhat_valid[-1])

三个时期的曲线图: Plot of train-test-validation periods


Tags: testaddverbosemodeltrainactivationpredictdense