Почему Confusion Maxtrix и Model ACC различаются - PullRequest
0 голосов
/ 12 января 2019

В настоящее время мы строим Confusion Matrix, используя CNN, что отличается от Model Acc.

Model ACC равно 92,3 %, когда точность 51% рассчитывается с использованием Confusion Matrix.

Что из следующего должно быть верно для Model ACC и Confusion Matrix в этом случае?

А как мне решить проблему?

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics= 
['accuracy'])
hist = model.fit_generator(train_generator, steps_per_epoch=10, epochs= 20, 
validation_data=test_generator, validation_steps=10 )
#5. Model Evaluate
print("-- Evaluate --")
scores = model.evaluate_generator(test_generator)
print("%s: %.2f%%" %(model.metrics_names[1], scores[1]*100))

# 6.  Make Confusion Matrix
print("-- Predict --")
output = model.predict_generator(test_generator)
print('Counfusion Matrix')
output1 = np.argmax(output,axis=1)
cm1=confusion_matrix(test_generator.classes, output1)
print(cm1)

1 Ответ

0 голосов
/ 12 января 2019

Вы должны сделать что-то не так, я провел простой эксперимент с набором данных mnsit, я получил тот же результат.

# my model loss and metric
model.compile(loss='categorical_crossentropy',
                  optimizer='adam',
                  metrics=['accuracy'])
# fit model and train
# evaluate model
score = model.evaluate(X_train, Y_train1, verbose=1)
print('Val accuracy by model:', score[1])

from sklearn.metrics import confusion_matrix as cm
pred = model.predict(X_train)
pred_label = [np.argmax(i) for i in pred]
actual_label = [np.argmax(i) for i in Y_train1]

cm1 = cm(pred_label, actual_label)
print('Val accuracy by confusion-metrics:', np.trace(cm1)/Y_train1.shape[0])

Смотрите результат:

Val accuracy by model: 0.9872380952380952
Val accuracy by confusion-metrics: 0.9872380952380952

Убедитесь, что вы передаете правильные метрики и функцию потерь.

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