imerg-nowcasting / src /data /processing.py
rlrocha's picture
add data module
b7cedfb
raw
history blame contribute delete
No virus
1.21 kB
import numpy as np
class Scaler():
def __init__(self, scaler='standard', range=(0,1)):
if not scaler.lower() in ['minmax', 'standard']:
raise ValueError('Incorrect scaler. Please choose between minmax and standard.')
self.scaler = scaler.lower()
self.min = range[0]
self.max = range[1]
def fit(self, X):
if self.scaler == 'minmax':
self.data_min = np.nanmin(X)
self.data_max = np.nanmax(X)
else:
self.data_mean = np.nanmean(X)
self.data_std = np.nanstd(X)
return self
def transform(self, X):
X = X.copy()
if self.scaler == 'minmax':
X = (X-self.data_min)/(self.data_max - self.data_min)*(self.max-self.min) + self.min
else:
X = (X-self.data_mean)/self.data_std
return X
def inverse_transform(self, X):
X = X.copy()
if self.scaler == 'minmax':
X = ((X-self.min)*(self.data_max-self.data_min)/(self.max-self.min)) + self.data_min
else:
X = X*self.data_std + self.data_mean
return X