以下是我的模型定义:
model = Sequential()
model.add(LSTM(i, input_shape=(None, 1), return_sequences=True))
model.add(Dropout(l))
model.add(LSTM(j))
model.add(Dropout(l))
model.add(Dense(k))
model.add(Dropout(l))
model.add(Dense(1))
这是结果
p = model.predict(x_test)
plt.plot(y_test)
plt.plot(p)
顺序输入表示前一时间步的过去信号,输出预测下一时间步的信号。将训练数据和测试数据分开后,对测试数据的预测如下:
该图与黄金测试数据和预测几乎完全吻合。有没有可能以如此高的精确度进行预测?你知道吗
我认为有些问题,因为没有波动性。所以我想知道它是否得到了正确的实施。你知道吗
如果实现是正确的,如何获得以下(下一个)值?你知道吗
这样做对吗?你知道吗
a = x_test[-1]
b = model.predict(a)
c = model.predict(b)
...
总结一下这个问题:
实施方式正确吗?
我想知道如何得到下一个数据的值。
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))
进行预处理。你知道吗
你的代码似乎是正确的。我认为你没有得到令人惊讶的结果。您需要将结果与基线进行比较,即下一个预测是从可能的日常变化范围中随机抽样的。这样至少你可以理解你的模型是否比随机抽样做得更好。你知道吗
你可以检查你的结果是否比随机抽样好。你知道吗
这将提供测试集中的最后一个数据点:
然后,你在这里预测下一天:
基于
look_back
,您可能需要保留一些数据点以预测下一个点:相关问题 更多 >
编程相关推荐