递归神经网络预测相同的答案

时间:2020-04-08 07:27:37

标签: python pandas tensorflow keras lstm

我试图预测第二天股价会上涨还是下跌。我使用的pandas DataFrame有43列,其中一列是y值,y值在0和1之间浮动,我的DataFrame也有5016行用数字索引。我用一些LSTM单元格和一些密集单元格制作了一个模型,其损失函数为biary_crossentropy,但是当我运行该模型并尝试打印预测时,所有预测都是相同的:

[[0.56393844]

[0.56393844]

[0.56393844]

...

[0.56393844]

[0.56393844]

[0.56393844]]

y值并不完全相同。 Y值:

0

1

0

1

1

损失和准确性也开始相同:

Epoch 7/10

4012/4012 [==============================-20s 5ms / sample-损失:0.7052-acc: 0.5015-val_loss:

0.6884-val_acc:0.5488

Epoch 8/10

4012/4012 [=============================]-19s 5ms /样本-损失:0.7054-acc: 0.4980-val_loss:

0.6907-val_acc:0.5488

第9/10版

4012/4012 [==============================]-18s 5ms / sample-损耗:0.7078-acc: 0.4890-val_loss:

0.6894-val_acc:0.5488

我的代码如下:

def menu():
    print("Please select the following option:\n 1. 1b\n 2. 2b\n 3. 3b\n 4. 4b\n 5. 5b\n")
    option = input()
    if option == "1":
        endCol = 133
    if option == "2":
        endCol = 135
    if option == "3":
        endCol = 263
    if option == "4":
        endCol = 519
    if option == "5":
        endCol = 1031
    return endCol

## when calling the menu() function:
V = menu()

### you can now work with the value V:

df2 = pd.read_csv(csv, skiprows=range(62,125), usecols=range(3, V))

我对神经网络了解不多,所以我不知道哪一层是最有效的,或者我应该制作多少层。如果有人知道如何解决此问题,以便我的神经网络真正学习,请告诉我。我知道如何使我的网络更高效或更有效,也让我知道。预先感谢。

1 个答案:

答案 0 :(得分:0)

由于您使用“ binary_crossentropy”,这意味着您的答案将四舍五入为0或1。最有可能的是,您的LSTM发现,如果始终将其预测为1,则总分会高于50%,这更好超过50/50的猜测。这是ML中二进制问题中非常普遍的问题。得出0.56的原因是因为您使用“准确度”作为度量标准,这是正确的/所有的猜测,并且如果您每次预测都为1,则将获得相同的准确性。

问题出在您的模型上,它可能太简单,太复杂或调整值错误。尝试删除一个LSTM层,尝试其节点大小等,直到得到一个不一致的答案。