Source code for tempor.methods.preprocessing.scaling.static.plugin_static_minmax_scaler
"""MinMax scaling for the static data."""importdataclassesfromtypingimportAny,Dict,List,Tupleimportpandasaspdfromsklearn.preprocessingimportMinMaxScalerfromtyping_extensionsimportSelffromtempor.coreimportpluginsfromtempor.dataimportdatasetfromtempor.data.samplesimportStaticSamplesfromtempor.methods.core.paramsimportCategoricalParams,Paramsfromtempor.methods.preprocessing.scaling._baseimportBaseScaler
[docs]@dataclasses.dataclassclassStaticMinMaxScalerParams:"""Initialization parameters for :class:`StaticMinMaxScaler`."""feature_range:Tuple[int,int]=(0,1)"""Desired range of transformed data. See `sklearn.preprocessing.MinMaxScaler`."""clip:bool=False"""Set to True to clip transformed values of held-out data to provided ``feature_range``. See `sklearn.preprocessing.MinMaxScaler`. """
[docs]@plugins.register_plugin(name="static_minmax_scaler",category="preprocessing.scaling.static")classStaticMinMaxScaler(BaseScaler):ParamsDefinition=StaticMinMaxScalerParamsparams:StaticMinMaxScalerParams# type: ignoredef__init__(self,**params:Any)->None:"""MinMax scaling for the static data. Transform the static features by scaling each feature to a given range. This estimator scales and translates each feature individually such that it is in the given range on the training set, e.g. between zero and one. Args: **params (Any): Parameters and defaults as defined in :class:`StaticMinMaxScalerParams`. Example: >>> from tempor import plugin_loader >>> >>> dataset = plugin_loader.get("prediction.one_off.sine", plugin_type="datasource").load() >>> >>> # Load the model: >>> model = plugin_loader.get("preprocessing.scaling.static.static_minmax_scaler") >>> >>> # Train: >>> model.fit(dataset) StaticMinMaxScaler(...) >>> >>> # Scale: >>> scaled = model.transform(dataset) """super().__init__(**params)sklearn_params:Dict[str,Any]=dict(self.params)# type: ignoresklearn_params["feature_range"]=tuple(sklearn_params["feature_range"])self.model=MinMaxScaler(**sklearn_params)def_fit(self,data:dataset.BaseDataset,*args:Any,**kwargs:Any,)->Self:ifdata.staticisNone:returnselfself.model.fit(data.static.dataframe())returnselfdef_transform(self,data:dataset.BaseDataset,*args:Any,**kwargs:Any)->dataset.BaseDataset:ifdata.staticisNone:returndatastatic_data=data.static.dataframe()scaled=pd.DataFrame(self.model.transform(static_data))scaled.columns=static_data.columnsscaled.index=static_data.indexdata.static=StaticSamples.from_dataframe(scaled)returndata