import numpy as np from sklearn.metrics import accuracy_score, recall_score, precision_score, f1_score, confusion_matrix from sklearn.metrics import average_precision_score # Assuming y_true and y_pred are your data y_true = [0, 1, 1, 0, 1, 1] y_pred = [0, 0, 1, 0, 0, 1] # Assuming y_true and y_pred are your data y_true = [[0, 1, 1], [0, 1, 1], [1, 0, 1]] y_pred = [[0, 0, 1], [0, 0, 1], [1, 0, 0]] class model_metrics: def __init__(self): self.clear() def clear(self): self.accuracy = 0.0 self.recall = 0.0 self.precision = 0.0 self.f1 = 0.0 self.mAP = 0.0 self.cm = np.asarray([]) self.count = 0 self.total_accuracy = 0.0 self.total_recall = 0.0 self.total_precision = 0.0 self.total_f1 = 0.0 self.total_mAP = 0.0 self.total_cm = np.asarray([]) def get_indicators(self): return self.total_accuracy / self.count, self.total_recall / self.count, self.total_precision / self.count, self.total_f1 / self.count, self.total_mAP / self.count, self.total_cm / self.count def dump(self): print(f"Accuracy: {self.accuracy}") print(f"Recall: {self.recall}") print(f"Precision: {self.precision}") print(f"F1 Score: {self.f1}") print(f"mAP: {self.mAP}") print(f"Confusion Matrix: \n{self.cm}") print(f'average accuracy: {self.total_accuracy / self.count}') print(f'average recall: {self.total_recall / self.count}') print(f'average precision: {self.total_precision / self.count}') print(f'average f1: {self.total_f1 / self.count}') print(f'average mAP: {self.total_mAP / self.count}') print(f'average confusion matrix: \n{self.total_cm / self.count}') def calc_metrics(self, y_true, y_pred, y_score): self.accuracy = accuracy_score(y_true, y_pred) self.recall = recall_score(y_true, y_pred, average='weighted') self.precision = precision_score(y_true, y_pred, average='micro') self.cm = confusion_matrix(y_true, y_pred) self.count += 1 self.total_accuracy += self.accuracy self.total_recall += self.recall self.total_precision += self.precision self.total_f1 += self.f1 self.total_mAP += self.mAP self.total_cm = self.cm # TBD return self.accuracy, self.recall, self.precision, self.f1, self.mAP, self.cm def calc_metrics_multi(self, y_true, y_pred): self.accuracy = accuracy_score(y_true, y_pred) self.recall = recall_score(y_true, y_pred, average='micro') self.precision = precision_score(y_true, y_pred, average='micro') self.f1 = f1_score(y_true, y_pred, average='micro') self.mAP = average_precision_score(y_true, y_pred, average='micro') self.count += 1 return self.accuracy, self.recall, self.precision, self.f1, self.mAP, self.cm