我怎样才能得到预测未来的后续(下一个)值?
how can I get the predict future following(next) value?
def create_dataset(signal_data, look_back=1):
dataX, dataY = [], []
for i in range(len(signal_data) - look_back):
dataX.append(signal_data[i:(i + look_back), 0])
dataY.append(signal_data[i + look_back, 0])
return np.array(dataX), np.array(dataY)
train_size = int(len(signal_data) * 0.80)
test_size = len(signal_data) - train_size - int(len(signal_data) * 0.05)
val_size = len(signal_data) - train_size - test_size
train = signal_data[0:train_size]
val = signal_data[train_size:train_size+val_size]
test = signal_data[train_size+val_size:len(signal_data)]
x_train, y_train = create_dataset(train, look_back)
x_val, y_val = create_dataset(val, look_back)
x_test, y_test = create_dataset(test, look_back)
我使用 create_dataset
和 look_back=20
。
signal_data
使用最小-最大规范化进行预处理 MinMaxScaler(feature_range=(0, 1))
。
这是我的模型定义:
model = Sequential()
model.add(LSTM(64, input_shape=(None, 1), return_sequences=True))
model.add(Dropout(l))
model.add(LSTM(64))
model.add(Dropout(l))
model.add(Dense(64))
model.add(Dropout(l))
model.add(Dense(1))
x_test
形状是 (1340, 20, 1)
和
y_test
形状是(1340,)
现在...你如何获得以下(下一个)值?
我想获取下一个值,例如 model.predict
等...
我有x_test
和x_test[-1] == t
所以,下一个值的含义是t+1,t+2,.... t+n,在这个例子中我想得到t+1, t+2 ... t+n
如果你想要完整的源代码(包括数据集)那么你可以在这里看到https://gist.github.com/Lay4U/e1fc7d036356575f4d0799cdcebed90e
假设 total_data
是您的总数据集,sc
是您的 MinMaxScaler
。然后,在训练网络之后,您可以通过执行以下操作来预测下一个 n
值。
inputs = total_data[len(total_data) - n - look_back:].values
inputs = inputs.reshape(-1,1)
inputs = sc.transform(inputs)
X_test = []
for i in range(look_back, inputs.shape[0]):
X_test.append(inputs[i-look_back:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
predicted_stock_price = model.predict(X_test)
predicted_stock_price = sc.inverse_transform(predicted_stock_price)
print predicted_stock_price.shape
会产生 (n, 1)
的形状,这是您要预测的值的数量。
def create_dataset(signal_data, look_back=1):
dataX, dataY = [], []
for i in range(len(signal_data) - look_back):
dataX.append(signal_data[i:(i + look_back), 0])
dataY.append(signal_data[i + look_back, 0])
return np.array(dataX), np.array(dataY)
train_size = int(len(signal_data) * 0.80)
test_size = len(signal_data) - train_size - int(len(signal_data) * 0.05)
val_size = len(signal_data) - train_size - test_size
train = signal_data[0:train_size]
val = signal_data[train_size:train_size+val_size]
test = signal_data[train_size+val_size:len(signal_data)]
x_train, y_train = create_dataset(train, look_back)
x_val, y_val = create_dataset(val, look_back)
x_test, y_test = create_dataset(test, look_back)
我使用 create_dataset
和 look_back=20
。
signal_data
使用最小-最大规范化进行预处理 MinMaxScaler(feature_range=(0, 1))
。
这是我的模型定义:
model = Sequential()
model.add(LSTM(64, input_shape=(None, 1), return_sequences=True))
model.add(Dropout(l))
model.add(LSTM(64))
model.add(Dropout(l))
model.add(Dense(64))
model.add(Dropout(l))
model.add(Dense(1))
x_test
形状是 (1340, 20, 1)
和
y_test
形状是(1340,)
现在...你如何获得以下(下一个)值?
我想获取下一个值,例如 model.predict
等...
我有x_test
和x_test[-1] == t
所以,下一个值的含义是t+1,t+2,.... t+n,在这个例子中我想得到t+1, t+2 ... t+n
如果你想要完整的源代码(包括数据集)那么你可以在这里看到https://gist.github.com/Lay4U/e1fc7d036356575f4d0799cdcebed90e
假设 total_data
是您的总数据集,sc
是您的 MinMaxScaler
。然后,在训练网络之后,您可以通过执行以下操作来预测下一个 n
值。
inputs = total_data[len(total_data) - n - look_back:].values
inputs = inputs.reshape(-1,1)
inputs = sc.transform(inputs)
X_test = []
for i in range(look_back, inputs.shape[0]):
X_test.append(inputs[i-look_back:i, 0])
X_test = np.array(X_test)
X_test = np.reshape(X_test, (X_test.shape[0], X_test.shape[1], 1))
predicted_stock_price = model.predict(X_test)
predicted_stock_price = sc.inverse_transform(predicted_stock_price)
print predicted_stock_price.shape
会产生 (n, 1)
的形状,这是您要预测的值的数量。