Source code for sklearn_utilities.proba.standard_scaler_var
from __future__ import annotations
from typing import Any, Literal
from sklearn.discriminant_analysis import StandardScaler
[docs]
class StandardScalerVar(StandardScaler):
with_mean: bool
def __init__(
self,
*,
copy: bool = True,
with_mean: bool = True,
with_std: bool = True,
var_type: Literal["std", "var"] = "std",
) -> None:
super().__init__(copy=copy, with_mean=with_mean, with_std=with_std)
self.var_type = var_type
[docs]
def inverse_transform(
self, X: Any, copy: bool | None = None, return_std: bool = False
) -> Any:
if return_std:
if isinstance(X, tuple):
return self.inverse_transform(
X[0], copy, False
), self.inverse_transform(X[1], copy, True)
prev_with_mean = self.with_mean
self.with_mean = False
for i in range(1 if self.var_type == "std" else 2):
X_scaled = super().inverse_transform(X, copy if i == 0 else None)
self.with_mean = prev_with_mean
return X_scaled
return super().inverse_transform(X, copy)