gators.scalers.YeoJohnson

class gators.scalers.YeoJohnson(lambdas_dict: Dict[str, float], inplace: bool = True)[source]

Scale the data accoring to the Yeo-Johnson transformation.

It is recommanded to use the StandardScaler transformer before running YeoJohnson.

Parameters
lambdas_dictDict[str, List[float]]

The keys are the columns, the values are the list of lambdas:

Examples

Imports and initialization:

>>> from gators.scalers import YeoJohnson
>>> lambdas_dict = {'A': 0.8130050344716966, 'B': 1.0431595843133055, 'C': 0.9168245659045446}
>>> obj = YeoJohnson(lambdas_dict=lambdas_dict)

The fit, transform, and fit_transform methods accept:

>>> import dask.dataframe as dd
>>> import pandas as pd
>>> X = dd.from_pandas(pd.DataFrame({
... "A": [3., 1., -3., -1., -3.],
... "B": [22.0, 38.0, -26.0, 35.0, 3 - 5.0],
... "C": [7.25, 71.2833, -7.925, -53.1, -8.05]}), npartitions=1)
  • koalas dataframes:

>>> import databricks.koalas as ks
>>> X = ks.DataFrame({
... "A": [3., 1., -3., -1., -3.],
... "B": [22.0, 38.0, -26.0, 35.0, 3 - 5.0],
... "C": [7.25, 71.2833, -7.925, -53.1, -8.05]})
  • and pandas dataframes:

>>> import pandas as pd
>>> X = pd.DataFrame({
... "A": [3., 1., -3., -1., -3.],
... "B": [22.0, 38.0, -26.0, 35.0, 3 - 5.0],
... "C": [7.25, 71.2833, -7.925, -53.1, -8.05]})

The result is a transformed dataframe belonging to the same dataframe library.

>>> obj.fit_transform(X)
          A          B          C
0  2.566505  24.284823   6.459180
1  0.930950  42.832241  54.132971
2 -3.524638 -23.431274  -8.961789
3 -1.075641  39.324310 -68.684587
4 -3.524638  -1.945019  -9.111836

Independly of the dataframe library used to fit the transformer, the tranform_numpy method only accepts NumPy arrays and returns a transformed NumPy array. Note that this transformer should only be used when the number of rows is small e.g. in real-time environment.

>>> obj.transform_numpy(X.to_numpy())
array([[  2.22845745,  26.90617943,   5.7929225 ],
       [  0.87009573,  48.50683594,  41.9899559 ],
       [ -4.21259165, -21.19840813, -10.21141434],
       [ -1.16205084,  44.38453674, -90.64434052],
       [ -4.21259165,  -1.89256322, -10.39319134]])
fit(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame], y: Union[pd.Series, ks.Series, dd.Series] = None) → YeoJonhson[source]

Fit the transformer on the pandas/koalas dataframe X.

Parameters
XDataFrame

Input dataframe.

ySeries, default None.

Target values.

Returns
self‘YeoJonhson’

Instance of itself.

transform(X)[source]

Transform the dataframe X.

Parameters
XDataFrame.

Input dataframe.

Returns
XDataFrame

Transformed dataframe.

transform_numpy(X: numpy.ndarray) → numpy.ndarray[source]

Transform the array X.

Parameters
Xnp.ndarray:

Input array.

Returns
Xnp.ndarray

Transformed array.

static check_array(X: numpy.ndarray)

Validate array.

Parameters
Xnp.ndarray

Array.

check_array_is_numerics(X: numpy.ndarray)

Check if array is only numerics.

Parameters
Xnp.ndarray

Array.

static check_binary_target(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame], y: Union[pd.Series, ks.Series, dd.Series])

Raise an error if the target is not binary.

Parameters
ySeries

Target values.

static check_dataframe(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame])

Validate dataframe.

Parameters
XDataFrame

Dataframe.

static check_dataframe_contains_numerics(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame])

Check if dataframe is only numerics.

Parameters
XDataFrame

Dataframe.

static check_dataframe_is_numerics(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame])

Check if dataframe is only numerics.

Parameters
XDataFrame

Dataframe.

check_dataframe_with_objects(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame])

Check if dataframe contains object columns.

Parameters
XDataFrame

Dataframe.

check_datatype(dtype, accepted_dtypes)

Check if dataframe is only numerics.

Parameters
XDataFrame

Dataframe.

static check_multiclass_target(y: Union[pd.Series, ks.Series, dd.Series])

Raise an error if the target is not discrete.

Parameters
ySeries

Target values.

check_nans(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame], columns: List[str])

Raise an error if X contains NaN values.

Parameters
XDataFrame

Dataframe.

theta_vecList[float]

List of columns.

static check_regression_target(y: Union[pd.Series, ks.Series, dd.Series])

Raise an error if the target is not discrete.

Parameters
ySeries

Target values.

static check_target(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame], y: Union[pd.Series, ks.Series, dd.Series])

Validate target.

Parameters
XDataFrame

Dataframe.

ySeries

Target values.

fit_transform(X: Union[pd.DataFrame, ks.DataFrame, dd.DataFrame], y: Union[pd.Series, ks.Series, dd.Series] = None) → Union[pd.DataFrame, ks.DataFrame, dd.DataFrame]

Fit and Transform the dataframe X.

Parameters
XDataFrame.

Input dataframe.

ySeries, default None.

Input target.

Returns
XDataFrame

Transformed dataframe.

static get_column_names(inplace: bool, columns: List[str], suffix: str)

Return the names of the modified columns.

Parameters
inplacebool

If True return columns. If False return columns__suffix.

columnsList[str]

List of columns.

suffixstr

Suffix used if inplace is False.

Returns
List[str]

List of column names.

get_params(deep=True)

Get parameters for this estimator.

Parameters
deepbool, default=True

If True, will return the parameters for this estimator and contained subobjects that are estimators.

Returns
paramsdict

Parameter names mapped to their values.

set_params(**params)

Set the parameters of this estimator.

The method works on simple estimators as well as on nested objects (such as Pipeline). The latter have parameters of the form <component>__<parameter> so that it’s possible to update each component of a nested object.

Parameters
**paramsdict

Estimator parameters.

Returns
selfestimator instance

Estimator instance.