Я пытаюсь предсказать, повысится ли цена акции на go вверх или вниз на следующий день. Я использую 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
Потери и точность также начинают совпадать:
Эпоха 7/10
4012/4012 [================== =============] - 20 с 5 мс / выборка - потеря: 0,7052 - cc: 0,5015 - val_loss:
0,6884 - val_a cc: 0,5488
Эпоха 8/10
4012/4012 [=============================] - 19 с 5 мс / выборка - потеря: 0,7054 - cc: 0,4980 - val_loss:
0,6907 - val_a cc: 0,5488
Эпоха 9/10
4012/4012 [==============================] - 18 с 5 мс / выборка - потеря: 0,7078 - cc: 0,4890 - val_loss :
0.6894 - val_a cc: 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)
Я не знаю много о нейронных сетях, поэтому Я не знаю, какие слои являются наиболее эффективными или сколько слоев я должен сделать. Если кто-то знает, как я могу это исправить, чтобы моя нейронная сеть действительно научилась, пожалуйста, дайте мне знать. Если вы знаете, как сделать мою сеть более эффективной или лучшей, дайте мне знать. Заранее спасибо.