![](/img/trans.png)
[英]How can I implement the input of multiple regression in LSTM using keras?
[英]I wonder if I was right about the implement of lstm layer using keras
这是我的模型定义:
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))
预处理。
实施方式正确吗?
你的代码似乎是正确的。 我认为你没有得到令人惊讶的结果。 您需要将结果与基线进行比较,下一次预测是从可能的日常变化范围中随机采样的。 这样至少您可以了解您的模型是否比随机抽样做得更好。
delta_train = train[1][1:] - train[1][:-1]
delta_range_train = delta_train.max()-delta_train.min()
# generating the baseline based on the change range in training:
random_p = test[0][:, -1] + (np.random.rand(test[0].shape[0])-0.5)*delta_range_train
您可以检查您的结果是否比随机样本random_p
。
我想知道如何获取下一个数据的值。
这为您提供了测试集中的最后一个数据点:
a = x_test[-1:]
然后,您在这里预测下一个点日:
b = model.predict(a)
基于look_back
您可能需要保留一些数据点以预测下一个下一个点:
c = model.predict(np.array([list(a[0,1:])+[b]])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.