Skip to content
Snippets Groups Projects
Regression_metrics.py 1.18 KiB
Newer Older
DIANE's avatar
DIANE committed
from Packages import *

DIANE's avatar
DIANE committed
class metrics:
    def __init__(self, meas, pred):

        if isinstance(meas, pd.DataFrame):
            self.meas = meas.to_numpy()
        else :
            self.meas = meas.ravel()
            
        self.pred = pred.to_numpy().ravel()
    
    @property
    def evaluate_(self):
           xbar = np.mean(self.meas) # the average of measured values
           e2 = (self.meas - self.pred)**2 # the squared error
           print(xbar)
          # Sum of squared:
           # TOTAL
           sst = np.sum((self.meas-xbar)**2)
           # RESIDUAL
           ssr = np.sum(e2)
           # REGRESSION OR MODEL
           ssm = np.sum(self.pred - xbar)

           

          # Compute statistical metrics
           metr = pd.DataFrame()
           metr['r'] = [np.corrcoef(self.meas.ravel(), self.pred)[0,1]]
           metr['r2'] = [1-ssr/sst]
           metr['rmse'] = [np.sqrt(np.mean(e2))]
           metr['mae'] = [np.mean(np.abs(e2))]
           metr['rpd'] = [np.std(self.meas)/np.sqrt(np.mean(e2))]
           metr['rpiq'] = [(np.quantile(self.meas,.75)-np.quantile(self.meas,.25))/np.sqrt(np.mean(e2))]
           return metr