Сам код 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 равно проверенным точкам данных.