python中基于LSTM的二元时间序列预测

2024-04-24 16:38:56 发布

您现在位置: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)

Tags: addsizemodel表达式batchfitfeaturesepochs
1条回答
网友
1楼 · 发布于 2024-04-24 16:38:56

网络有效地对数据进行了回归,并没有给出精确的0或1。通过在两者之间给出一个数字,它产生了某种程度的自信,接近1的数字更自信地是1。要对此进行转换,可以应用阈值化,将输出四舍五入为0或1

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

这就是说,这实际上并没有最小化某些类型的损失函数。如果你在MSE这样的函数上得分,最好保持数字不变

相关问题 更多 >