Расчет точности в керасе не совпадает - PullRequest
0 голосов
/ 25 мая 2018

В настоящее время делаю мультибликовый классификатор.Я получаю подозрительно высокую точность (0,94), вызывая метод оценки в кератах (метод оценки возвращает точность и потери).Затем я попытался запрограммировать метод вручную, как описано здесь: Как Keras оценивает точность?

Однако я получаю гораздо более низкую точность, делая это самостоятельно.F1_mico: 0,7157894736842105 Точность: 0,3530864197530864

Я не понимаю, почему.Я думал, что это связано с несбалансированностью классов.Значение f1_mico высокое, в то время как f1_macro составляет около 0,45, поэтому, кажется, имеет смысл (у меня есть иерархия, поэтому некоторые классы, естественно, появляются чаще, чем другие).Однако как Керас получает такую ​​высокую точность, это не имеет смысла для меня.Код:

model.compile(optimizer=adam, loss='binary_crossentropy', metrics=['accuracy'])
#print("Traning Model...")
model.fit(X_train, y_train, batch_size=batch_size, epochs=epochs, verbose=1, callbacks=[checkpoint], validation_data=(X_test, y_test))  # starts training
print("Testing Model")
output = model.predict(X_final, batch_size = batch_size)
for pred_i in output:
    pred_i[pred_i >=0.5] = 1
    pred_i[pred_i < 0.5] = 0
print "F1: " + str(f1_score(y_final, output, average='micro'))
print "Accuracy: " + str(accuracy_score(y_final, output))

mscores = model.evaluate(X_final, y_final, batch_size = batch_size)
print mscores

Выход:

Creating Model...
Testing Model
F1: 0.7157894736842105
Accuracy: 0.3530864197530864
405/405 [==============================] - 8s 20ms/step
['0.15227678694106914', '0.9422222640779283']

1 Ответ

0 голосов
/ 09 июня 2018

Точность, вычисленная keras, сравнивает каждое значение закодированного вектора в горячем состоянии и проверяет, совпадает ли оно.Если данные довольно скудны, это приводит к высокой точности системы, поскольку большинству значений будет присвоено ноль.Точность scilearn возвращает только один для данных, если полное предсказание совпадает.

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