def evaluate_model(model, num_classes, X_test, Y_test): predicted = model.predict(X_test) target_label = convert_prob_to_label(Y_test) predicted_label = convert_prob_to_label(predicted) target = np.ravel(target_label) predicted = np.ravel(predicted_label) evaluator = Evaluator(num_classes) accuracy = evaluator.calculate_accuracy(target, predicted) cm, precisions, recalls = evaluator.calculate_metrics(target, predicted) precision = np.mean(precisions) recall = np.mean(recalls) f1 = 2 * precision * recall / (precision + recall) return Result(cm, accuracy, precisions, precision, recalls, recall, f1)