я только что тестировал эту модель из kaggle post , эта модель предполагает прогнозирование на 1 день вперед из заданного набора последних акций .После нескольких настроек я получил удивительно хороший результат, как видите.
среднеквадратическая ошибка была 5,193. Так что в целом все выглядит хорошо при прогнозировании будущих запасов, верно?ну, это оказалось ужасно, когда я внимательно посмотрю на результаты.
, так как вы можете видеть, что эта модель предсказывает последнее значение данных акций, которое является нашей текущей последней акцией.
поэтому я скорректировал прогнозы на один шаг назад ..
так что теперь вы можете ясно видеть, что модель прогнозирует один шаг назад или последний выигрыш акций вместо будущих прогнозов акций.
Это мои тренировочные данные
# So for each element of training set, we have 30 previous training set elements
X_train = []
y_train = []
previous = 30
for i in range(previous,len(training_set_scaled)):
X_train.append(training_set_scaled[i-previous:i,0])
y_train.append(training_set_scaled[i,0])
X_train, y_train = np.array(X_train), np.array(y_train)
print(X_train[-1],y_train[-1])
Это моя модель
# The GRU architecture
regressorGRU = Sequential()
# First GRU layer with Dropout regularisation
regressorGRU.add(GRU(units=50, return_sequences=True, input_shape=(X_train.shape[1],1)))
regressorGRU.add(Dropout(0.2))
# Second GRU layer
regressorGRU.add(GRU(units=50, return_sequences=True))
regressorGRU.add(Dropout(0.2))
# Third GRU layer
regressorGRU.add(GRU(units=50, return_sequences=True))
regressorGRU.add(Dropout(0.2))
# Fourth GRU layer
regressorGRU.add(GRU(units=50))
regressorGRU.add(Dropout(0.2))
# The output layer
regressorGRU.add(Dense(units=1))
# Compiling the RNN
regressorGRU.compile(optimizer='adam',loss='mean_squared_error')
# Fitting to the training set
regressorGRU.fit(X_train,y_train,epochs=50,batch_size=32)
И здесь - мой полный код, вы также можете запустить этот кодв google colab
.
поэтому мой вопрос в чем причина этого?что я делаю не так, какие-либо предложения?