from tabulate import tabulate


class Multiclass_ErrorRate:

    evaluations = {}

    def __init__(self, classes: list):
        for clazz in classes:
            self.evaluations[clazz] = [0, 0]

    def evaluate(self, expected_class: float, actual_class: float):
        if expected_class == actual_class:
            self.evaluations[expected_class][0] += 1
        else:
            self.evaluations[expected_class][1] += 1

    def print_table(self):
        for clazz in self.evaluations.keys():
            print(f"Klasse: {clazz}. Korrekt: {self.evaluations[clazz][0]}. Inkorrekt: {self.evaluations[clazz][1]}")
        error_rate = sum([clazz[1] for clazz in self.evaluations.values()]) / (sum([clazz[0] for clazz in self.evaluations.values()]) + sum([clazz[1] for clazz in self.evaluations.values()]))
        print(f"Errorrate: {error_rate}")