Почему акк DNN составляет менее 1% - PullRequest
0 голосов
/ 05 июля 2018

Я новичок в глубоком обучении. У меня есть X с размером 34, который представляет собой некоторые данные технического индикатора. И Y - это метка, которая в двоичном виде (1, -1) представляет акцию восходящего или нисходящего тренда. Вот мой код.

import pandas as pd
import numpy as np

data = pd.read_csv('data/data_week.csv')
data.dropna(inplace=True)
x = data.loc[:, 'bbands_upperband':'turn_std_5']
y = data['label']

from keras.models import Sequential
from keras.layers import Dense, Activation

model = Sequential()
model.add(Dense(512, activation='relu', input_dim=34))
model.add(Dense(200, activation='relu'))
model.add(Dense(200, activation='relu'))
model.add(Dense(200, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(1, activation='relu'))
model.compile(optimizer='rmsprop',
              loss='binary_crossentropy',
              metrics=['accuracy'])

model.fit(x, y, epochs=2, batch_size=200)



 231200/1041021 [=====>........................] - ETA: 59s - loss: 0.7098 - acc: 0.0086
 232000/1041021 [=====>........................] - ETA: 59s - loss: 0.7087 - acc: 0.0086

Однако точность составляет менее 1%. Я думаю, что это должно быть что-то не так. Если вы знаете, пожалуйста, скажите мне и большое спасибо!

1 Ответ

0 голосов
/ 05 июля 2018

Для бинарной модели классификации вы должны использовать функцию активации сигмоида в вашем последнем плотном слое

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

также, ваши классы должны быть (0,1), а не (-1,1)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...