В рекуррентных нейронных сетях количество предсказанных точек данных меньше, чем проверенных точек.Разница равна временному шагу - PullRequest
0 голосов
/ 30 мая 2019

Сам код keras работает нормально. Я думаю, что-то не так, когда я конвертирую CSV-файл в данные с временными шагами. Но я не уверен, что не так ... Текущий временной шаг равен 5, и у меня 5 пропущенных точек данных из выходных данных. В RNN у меня есть 4 столбца входов и 1 столбец выходов.

import os
import pandas as pd
from keras.models import Sequential
from keras.layers import *
from sklearn.preprocessing import MinMaxScaler
import sys
np.set_printoptions(threshold=sys.maxsize)

# Load training data set from CSV file
training_data_df = pd.read_csv("freedom_data_training1.csv", dtype=float)

# Selecting columns for prediction
training_data_df = training_data_df.iloc[:, 0:5]

# Converting into 2D array
training_data_df = training_data_df.values

# Scaling of Data Normalization
sc = MinMaxScaler()
training_data_df = sc.fit_transform(training_data_df)

# Creating Training Data with Timesteps
X_train = []
Y_train = []
for i in range(5, len(training_data_df)):
  X_train.append(training_data_df[i-5:i, 0:4])
  Y_train.append(training_data_df[i, 4])
X_train, Y_train = np.array(X_train), np.array(Y_train)
X_train = np.reshape(X_train, (X_train.shape[0], X_train.shape[1], 4))

#RNN

regressor = Sequential()

# Adding the input layer and the LSTM layer
regressor.add(LSTM(units=4, activation='relu', input_shape= 
(X_train.shape[1], 4)))
# Adding the output layer
regressor.add(Dense(units=1))
# Compiling the Recurrent Neural Network
regressor.compile(optimizer='adam', loss='mean_squared_error')
# Fitting the Recurrent Neural Network
regressor.fit(X_train, Y_train, batch_size=10, epochs=10)


# Load training data set from CSV file
testing_data_df = pd.read_csv("freedom_data_test1.csv", dtype=float)

#Selecting columns
testing_data_df = testing_data_df.iloc[:, 0:5]

# Converting into 2D array
testing_data_df = testing_data_df.values

# Scaling of Data
sc = MinMaxScaler()
testing_data_df = sc.fit_transform(testing_data_df)

# Creating Testing Data with Timesteps
X_test = []
Y_test = []
for i in range(5, len(testing_data_df)):
   X_test.append(testing_data_df[i-5:i, 0:4])
   Y_test.append(testing_data_df[i, 4])
X_test, Y_test = np.array(X_test), np.array(Y_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 4))

prediction = regressor.predict(X_test)

f = open("prediction_v1", "w+")
print(prediction, file=f)
f.close()

Я ожидаю, что количество прогнозируемых точек данных из RNN равно проверенным точкам данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...