Source code for UCTB.evaluation.metric

import numpy as np


[docs]def rmse(prediction, target, **kwargs): threshold = None for key, value in kwargs.items(): if key.lower() == 'threshold': threshold = value if threshold is None: return np.sqrt(np.mean(np.square(prediction - target))) else: return np.sqrt(np.dot(np.square(prediction - target).reshape([1, -1]), target.reshape([-1, 1]) > threshold) / np.sum(target > threshold))[0][0]
[docs]def mape(prediction, target, **kwargs): threshold = 0 for key, value in kwargs.items(): if key.lower() == 'threshold': threshold = value return (np.dot((np.abs(prediction - target) / (target + (1 - (target > threshold)))).reshape([1, -1]), target.reshape([-1, 1]) > threshold) / np.sum(target > threshold))[0, 0]
[docs]def rmse_grid(prediction, target, **kwargs): threshold = None for key, value in kwargs.items(): if key.lower() == 'threshold': threshold = value if threshold is None: return np.sqrt(np.mean(np.square(prediction - target), axis=0)) else: return np.sqrt(np.sum(np.square(prediction - target) * (target > threshold), axis=0) / np.sum(target > threshold, axis=0))
[docs]def mape_grid(prediction, target, **kwargs): threshold = 0 for key, value in kwargs.items(): if key.lower() == 'threshold': threshold = value return np.sum((np.abs(prediction - target) / (target + (1 - (target > threshold)))) * (target > threshold), axis=0) / np.sum(target > threshold, axis=0)