Newer
Older
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"]))