from tabulate import tabulate class ErrorRate: false_positives = 0 false_negatives = 0 true_positives = 0 true_negatives = 0 def __init__(self, value_true=1, value_false=-1): self.value_true = value_true self.value_false = value_false def evaluate(self, expected_class: float, actual_class: float): if expected_class == self.value_false: if actual_class == self.value_false: self.true_negatives += 1 else: self.false_positives += 1 if expected_class == self.value_true: if actual_class == self.value_true: self.true_positives += 1 else: self.false_negatives += 1 def value_sum(self): return self.false_positives + self.false_negatives + self.true_positives + self.true_negatives def error_rate(self): false_values = self.false_positives + self.false_negatives return false_values / self.value_sum() def success_rate(self): correct_values = self.true_positives + self.true_negatives return correct_values / self.value_sum() def true_positiv_rate(self): return self.true_positives / self.value_sum() def true_negative_rate(self): return self.true_negatives / self.value_sum() def false_positiv_rate(self): return self.false_positives / self.value_sum() def false_negative_rate(self): return self.false_positives / self.value_sum() def print_table(self): print("Gesamt-Erfolgsrate: " + str(self.success_rate())) print("Gesamt-Fehlerrate: " + str(self.error_rate()) + '\n') data = [['True-Positive', self.true_positives, self.true_positiv_rate()], ['True-Negative', self.true_negatives, self.true_negative_rate()], ['False-Positive', self.false_positives, self.false_positiv_rate()], ['False-Negative', self.false_negatives, self.false_negative_rate()]] print(tabulate(data, headers=["Typ", "Absolut", "Relativ"]))