Skip to content

Dynamic Runtime Parameters

In some cases one wishes to set a parameter based on calculations done in real time, based on the given input. Dynamic parameters help to achieve this with the pdp.dynamic function. The function is provided with a callable which implements the logic on deciding the parameter, and is applied only when the input is available.

Example

The scaling_decider function implements the logic for choosing the parameter type ('StandardScaler' or 'MinMaxScaler') and is passed to the pdp.dynamic function in the stage's (Scale) constructor. The logic references the given input and chooses a parameter based on it.

import numpy as np; import pandas as pd; import pdpipe as pdp;

def scaling_decider(X: pd.DataFrame) -> str:
    """
    Determines what scaler to apply by examining all numerical columns.
    """
    numX = X.select_dtypes(include=np.number)
    for col in numX.columns:
        if np.std(numX[col]) > 2 * np.mean(numX[col]):
            return 'StandardScaler'
    return 'MinMaxScaler'

pipeline = pdp.PdPipeline(stages=[
    pdp.ColDrop(pdp.cq.StartWith('n_')),  # unrelated to scaling
    pdp.Scale(
        scaler=pdp.dynamic(scaling_decider, fit=False),
        joint=True,
    )
])

Last update: 2022-09-19