我试图预测第二天股价会上涨还是下跌。我使用的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))
我对神经网络了解不多,所以我不知道哪一层是最有效的,或者我应该制作多少层。如果有人知道如何解决此问题,以便我的神经网络真正学习,请告诉我。我知道如何使我的网络更高效或更有效,也让我知道。预先感谢。
答案 0 :(得分:0)
由于您使用“ binary_crossentropy”,这意味着您的答案将四舍五入为0或1。最有可能的是,您的LSTM发现,如果始终将其预测为1,则总分会高于50%,这更好超过50/50的猜测。这是ML中二进制问题中非常普遍的问题。得出0.56的原因是因为您使用“准确度”作为度量标准,这是正确的/所有的猜测,并且如果您每次预测都为1,则将获得相同的准确性。
问题出在您的模型上,它可能太简单,太复杂或调整值错误。尝试删除一个LSTM层,尝试其节点大小等,直到得到一个不一致的答案。