簡體   English   中英

預測相同答案的遞歸神經網絡

[英]Recurrent nerural network predicting the same answer

我試圖預測第二天股價是上漲還是下跌 go。 我使用的是 pandas DataFrame,它有 43 列,其中 1 列是 y 值,y 值在 0 和 1 之間浮動,我的 ZBA834BA059A9A379459C112175EB88E 也有 44 行索引數字。 我用一些 LSTM 單元制作了一個 model 一些 Dense 單元,其中損失 function 是 biary_crossentropy,但是當我運行 model 時,預測結果相同:

[[0.56393844]

[0.56393844]

[0.56393844]

...

[0.56393844]

[0.56393844]

[0.56393844]]

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

0

1

0

1

1

損失和准確率也開始相同:

7/10 紀元

4012/4012 [===============================] - 20s 5ms/樣本 - 損失:0.7052 - acc: 0.5015 - val_loss :

0.6884 - val_acc:0.5488

時代 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/樣本 - 損失:0.7078 - acc: 0.4890 - val_loss :

0.6894 - val_acc:0.5488

我的代碼如下所示:

df = pd.read_csv("^AEX.csv")
df.index = pd.to_numeric(df.index, errors = 'coerce')
df = df.drop(['date'], axis = 1)
print(df.shape)
x = df.loc[:, df.columns != 'result']
y = df.loc[:, df.columns == 'result']

y = y.astype(int)

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, shuffle = False)
x_train = x_train.values.reshape(x_train.shape[0], 1, x_train.shape[1])
x_test = x_test.values.reshape(x_test.shape[0], 1, x_test.shape[1])

model = Sequential()

model.add(LSTM(42, input_shape = (1, 42), activation = 'relu', return_sequences = True))
model.add(Dropout(0.2))

model.add(LSTM(42, activation = 'relu'))
model.add(Dropout(0.2))

model.add(Dense(32, activation = 'relu'))
model.add(Dropout(0.2))

model.add(Dense(1, activation = 'sigmoid'))

opt = tf.keras.optimizers.Adam(lr = 0.1, decay=1e-7)

model.compile(loss = 'binary_crossentropy', optimizer = opt, metrics = ['accuracy'])

model.fit(x_train, y_train, epochs = 10, batch_size = 1, validation_data = (x_test, y_test))

prediction = model.predict(x_test)
print(prediction)
print(x_test)
print(y_test)

我對神經網絡了解不多,所以不知道哪些層最有效,也不知道應該做多少層。 如果有人知道我該如何解決這個問題,以便我的神經網絡真正學習,請告訴我。 我知道如何使我的網絡更高效或更好,也請告訴我。 提前致謝。

由於您使用“binary_crossentropy”,這意味着您的答案將四舍五入為 0 或 1。最有可能的是,您的 LSTM 發現,如果它一直預測 1,它將獲得高於 50% 的總分,這優於 50/ 50 猜測。 這是 ML 中二進制問題中非常常見的問題。 您得到 0.56 的原因是因為您使用“准確度”作為正確/所有猜測的指標,如果您每次都預測全部為 1,您將獲得相同的准確度。

問題出在您的 model 上,它可能太簡單、太復雜或調整值錯誤。 嘗試刪除一個 LSTM 層,試驗它們的節點大小等,直到你得到一個不一致的答案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM