Slackbot
10/04/2023, 12:24 PMJosé Morales
10/04/2023, 5:26 PMfrom mlforecast.grouped_array import GroupedArray
from mlforecast.target_transforms import BaseTargetTransform
from utilsforecast.target_transforms import LocalMinMaxScaler as BaseLocalMinMaxScaler
class LocalMinMaxScaler(BaseTargetTransform):
def fit_transform(self, df):
df = df.copy(deep=False)
ga = GroupedArray.from_sorted_df(df, self.id_col, self.target_col)
self.scaler_ = BaseLocalMinMaxScaler()
df[self.target_col] = self.scaler_.fit_transform(ga)
return df
def inverse_transform(self, df):
df = df.copy(deep=False)
sizes = df.groupby(self.id_col, observed=True).size().cumsum()
indptr = np.append(0, sizes)
model_cols = df.columns.drop([self.id_col, self.time_col])
for model in model_cols:
df[model] = self.scaler_.inverse_transform(GroupedArray(df[model].values, indptr))
return df
Let me know if you're using fitted=True
because that requires another method