Skip to content
Snippets Groups Projects
Regression_metrics.py 1.18 KiB
Newer Older
  • Learn to ignore specific revisions
  • 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