Модель Keras, производящая такой же результат - PullRequest
0 голосов
/ 23 сентября 2019

Я видел пару вопросов, у которых есть похожая проблема, но ни один из них не решил мой.Я пытаюсь приспособить нейронную сеть в Keras к набору данных с 22 входными функциями для двоичной классификации.Проблема в том, что у меня только 195 тренировочных образцов.Я знаю, что это небольшой набор данных, но я не знаю, возможно ли подобрать модель с разумной точностью (я стремлюсь к точности> 95%).У меня проблема в том, что моя модель выдает только 1 и получает точность 75%, потому что мой набор данных - 75% положительных случаев.Вот код, который у меня есть:

data = pd.read_csv("") #filename omitted, but it loads properly
scaler = MinMaxScaler()
X = scaler.fit_transform(X)
Y = data['status']
X = data.drop(['status', 'name'], axis = 1)
xTrain, xTest, yTrain, yTest = train_test_split(X, Y, train_size = 0.8)
model = Sequential()
model.add(Dense(48, input_shape=(22,), activation = 'relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation = 'softmax'))
optim = keras.optimizers.adam(lr=0.0001)
model.compile(optimizer = optim, loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(xTrain, yTrain, epochs = 20, batch_size = 5, validation_data = (xTest, yTest))

Я попытался добавить больше скрытых слоев, увеличить количество тренировочных эпох, увеличить и понизить скорость обучения оптимизатора, но точность осталась прежней.Вот ссылка на набор данных: https://www.dropbox.com/s/c4td650b4z7aizc/fixed.xlsx?dl=0

1 Ответ

1 голос
/ 23 сентября 2019

Некоторые вещи, которые вам нужно попробовать, чтобы получить лучшую точность:

  1. Не просто вводите набор данных, как он, в NN.Проведите некоторую подготовку данных, например, для балансировки класса ответа.Пожалуйста, обратите внимание на различные методы выборки, такие как Undersampling, Oversampling, SMOTE и т. Д. Точность может быть улучшена, если ваш набор данных имеет сбалансированное распределение классов.

  2. Вместо activation = 'softmax' следует использовать функцию активации sigmoid.

Помимо этих, вам следует попробовать несколько других архитектур, значения lr, нет.эпох, batch_size, оптимизаторов и т. д.

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