[英]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.