import math
import util
import numpy as np
import copy

class EffortStats:

    def __init__(self,label):
        self.label = label
        self.MREs = []

    def Evaluate(self,test, train, K=1):
        neighbors = []
        for kth in range(K):
            result = util.closest_to(test,train)
            train.remove(result)
            neighbors.append(result[-1])
        result = np.median(neighbors)
        self.MREs.append(self.MRE(test[-1],result))
        
    def MRE(self,actual,predicted):
        return math.fabs(actual - predicted) / math.fabs(actual)

    def GetMDMRE(self):
        return np.median(self.MREs)
