Я пытаюсь предсказать цену следующих 7 дней, используя LSTM. Это мой код:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import os
dataset_train = pd.read_excel('C:/Users/Shashank/Desktop/Neural Network/potatoTrainData.xlsx')
training_set = dataset_train.iloc[:,1:2].values
print(len(training_set))
from sklearn.preprocessing import MinMaxScaler
print(training_set)
sc=MinMaxScaler(feature_range = (0,1))
training_set_scale = sc.fit_transform(training_set)
X_train=[]
Y_train=[]
previous=2
next=1
for i in range(previous , len(training_set_scale)):
X_train.append(training_set_scale[i-previous:i,0])
Y_train.append(training_set_scale[i])
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],1))
print(X_train)
from keras.models import Sequential
from keras.layers import Dense
from keras.layers import LSTM
from keras.layers import Dropout
regressor = Sequential()
regressor.add(LSTM(units = 50, return_sequences = True, input_shape = (X_train.shape[1],1) ))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50, return_sequences = True ))
regressor.add(Dropout(0.2))
regressor.add(LSTM(units = 50 ))
regressor.add(Dropout(0.2))
regressor.add(Dense(units = 1))
regressor.compile(optimizer = 'adam', loss = 'mean_squared_error')
regressor.fit(X_train,Y_train,epochs=200,batch_size=32)
dataset_test= pd.read_excel('C:/Users/Shashank/Desktop/Neural Network/potatoTestData.xlsx')
real_price = dataset_test.iloc[:,1:2].values
print(dataset_test)
dataset_total=pd.concat((dataset_train['price'] , dataset_test['test_price']),axis = 0)
print(len(dataset_total))
print(dataset_total)
inputs=dataset_total[len(dataset_total)-len(dataset_test)-previous:].values
print(inputs)
inputs=inputs.reshape(-1,1)
inputs=sc.transform(inputs)
X_test=[]
for i in range(previous,previous+next):
X_test.append(inputs[i-previous:i,0])
print(X_test)
X_test=np.array(X_test)
X_test=np.reshape(X_test,(X_test.shape[0],X_test.shape[1],1))
predicted_price=regressor.predict(X_test)
predicted_price=sc.inverse_transform(predicted_price)
print(predicted_price)
print("Done")
print(real_price)
plt.plot(real_price , color='red' , label='Real Price')
plt.plot(predicted_price , color='blue' , label='Predicted Price')
plt.title('Price Prediction')
plt.xlabel('Time')
plt.ylabel('Price')
plt.legend()
plt.show()
Это прогнозируемая цена следующего 1 дня, потому что у меня есть только 1 элемент в X_test. Но X test - это данные, которые я имею для тестирования. Модель использует данные тестирования для прогнозирования цен. Как мне прогнозировать данные для реального будущего?