繁体   English   中英

在 python 中使用 LSTM 进行二进制时间序列预测

[英]Binary time series forecasting with LSTM in python

您好,我正在使用二进制时间序列的表达式数据,如下所示:

0: decrease expression
1: increase expression

我正在训练一个双向 LSTM 网络来预测下一个值,但它没有给我 0 或 1 的值,而是返回如下值:

0.564
0.456
0.423
0.58

我怎样才能让它返回 0 或 1?

这是我的代码:

ventana = 10
n_features = 1
neurons = 256 #155
activacion = 'softmax'
perdida = 0.25
batch_size = 32 # 32
epochs = 100 # 200
X, y = split_sequence(cierres, ventana)
X = X.reshape((X.shape[0], X.shape[1], n_features))
# define model
model = Sequential()
model.add(Bidirectional(LSTM(neurons, activation=activacion), input_shape=(ventana, n_features)))
model.add(Dropout(perdida))
model.add(Dense(1))
model.compile(optimizer='adam', loss='binary_crossentropy')
# fit model
model.fit(X, y, epochs=epochs, batch_size=batch_size, verbose=1, shuffle=False)

网络有效地对数据执行回归,并没有给出精确的 0 或 1。通过给出介于两者之间的数字,它产生了一定程度的置信度,数字更接近 1 更可信地为 1。要转换它,您可以应用thresholding ,将 output 舍入为 0 或 1。

import numpy as np
y_out = model.fit(...)
y_pred = np.round(y_out)

话虽如此,这实际上并没有最小化某些损失函数。 如果您在像 MSE 这样的 function 上得分,最好保持数字不变。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM