Я видел пару вопросов, у которых есть похожая проблема, но ни один из них не решил мой.Я пытаюсь приспособить нейронную сеть в 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