вот мой код
def create_dataset(data, look_back=1):
dataX, dataY = [], []
for i in range(len(data) - look_back):
dataX.append(data[i:(i + look_back), 0])
dataY.append(data[i + look_back, 0])
return np.array(dataX), np.array(dataY)
look_back = 10
df = pd.read_csv('kospi.csv')
data = df.Close.values.astype('float32')
data = data.reshape(len(df), 1)
scaler = MinMaxScaler(feature_range=(0, 1))
data = scaler.fit_transform(data)
train_size = int(len(data) * 0.80)
test_size = len(data) - train_size
train = data[0:train_size]
test = data[train_size:len(data)]
x_train, y_train = create_dataset(train, look_back)
x_test, y_test = create_dataset(test, look_back)
x_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], 1))
x_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], 1))
model = Sequential()
model.add(LSTM(512, input_shape=(None, 1), return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(512, input_shape=(None, 1)))
model.add(Dropout(0.3))
model.add(Dense(1))
model.compile(loss='mean_squared_error', optimizer='rmsprop', metrics=['accuracy'])
model.summary()
hist = model.fit(x_train, y_train, epochs=10, batch_size=16, verbose=2)
p = model.predict(x_test)
plt.plot(y_test)
plt.plot(p)
plt.legend(['testY', 'p'], loc='upper right')
plt.title(mean_squared_error(y_test, p))
# plt.savefig(datetime.datetime.now())
# plt.savefig(name)
plt.show()
эта модель predcit(x_test)
хорошо работает
и теперь я хочу предсказать следующие 100 значений
Я пытался p = model.predict(x_test[-1])
но это выглядит как неправильный метод
как я могу получить прогнозируемые следующие N значений?
Я думаю, что мы можем решить это, используя model.predict
.
Но я не знаю, какой вклад и как сделать прогноз.
Я много пробовал, но не смог решить. Как я могу решить эту проблему?
kospi.csv ссылка https://docs.google.com/spreadsheets/d/1Q6Lh07Yg-OGtuz_Rvy979gcA65jrEqVNJNjndklCbg4/edit?usp=sharing