Source code for tempor.methods.preprocessing.scaling.static.plugin_static_standard_scaler
"""Standard scaling for the static data."""importdataclassesfromtypingimportAny,Dict,Listimportpandasaspdfromsklearn.preprocessingimportStandardScalerfromtyping_extensionsimportSelffromtempor.coreimportpluginsfromtempor.dataimportdatasetfromtempor.data.samplesimportStaticSamplesfromtempor.methods.core.paramsimportParamsfromtempor.methods.preprocessing.scaling._baseimportBaseScaler
[docs]@dataclasses.dataclassclassStaticStandardScalerParams:"""Initialization parameters for :class:`StaticStandardScaler`."""with_mean:bool=True"""If True, center the data before scaling. See `sklearn.preprocessing.StandardScaler`."""with_std:bool=True"""If True, scale the data to unit variance. See `sklearn.preprocessing.StandardScaler`."""
[docs]@plugins.register_plugin(name="static_standard_scaler",category="preprocessing.scaling.static")classStaticStandardScaler(BaseScaler):ParamsDefinition=StaticStandardScalerParamsparams:StaticStandardScalerParams# type: ignoredef__init__(self,**params:Any)->None:"""Standard scaling for the static data. Standardize the static features by removing the mean and scaling to unit variance. Args: **params (Any): Parameters and defaults as defined in :class:`StaticStandardScalerParams`. 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_standard_scaler") >>> >>> # Train: >>> model.fit(dataset) StaticStandardScaler(...) >>> >>> # Scale: >>> scaled = model.transform(dataset) """super().__init__(**params)sklearn_params:Dict[str,Any]=dict(self.params)# type: ignoreself.model=StandardScaler(**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