pretab.transformers.TanhExpansionTransformer

class pretab.transformers.TanhExpansionTransformer(output_dim=UNSET, scale=1.0, target_aware=False, placement_strategy=UNSET, task='regression', adaptive=False, min_output_dim=UNSET, max_output_dim=UNSET, random_state=None)[source]

Bases: BaseCenterExpansion

Applies hyperbolic tangent (tanh) basis expansion to input features using specified or learned center locations.

This transformer expands each input feature into multiple tanh-activated features, useful for capturing nonlinear and saturating patterns in the data.

Parameters:
  • output_dim (int, default=6) – Number of tanh centers (output columns) per feature.

  • scale (float, default=1.0) – Controls the sharpness of the tanh transitions. Smaller values make the activation sharper.

  • target_aware (bool, default=False) – Whether to place centers with a target-aware selector (requires y).

  • placement_strategy ({"cart", "lightgbm", "uniform", "quantile"}, optional) – Selector when target_aware=True ("cart" or "lightgbm"); spacing when target_aware=False ("uniform" or "quantile"). If left unset, resolves to "cart" on the target-aware path and "quantile" otherwise.

  • task ({"regression", "classification"}, default="regression") – Task type for the target-aware selector used to place centers.

  • adaptive (bool, default=False) – If True (with target_aware=True), the per-feature number of centers may vary within [min_output_dim, max_output_dim] instead of being fixed to output_dim. Has no effect on the quantile / uniform paths.

  • min_output_dim (int or None, default=None) – Lower bound on the per-feature number of centers in adaptive mode.

  • max_output_dim (int or None, default=None) – Upper bound on the per-feature number of centers in adaptive mode.

  • random_state (int or None, default=None) – Random state forwarded to the target-aware selector for reproducibility.

Variables:
  • centers (list of ndarray) – A list of center values for each input feature used in the tanh expansion.

  • total_output_dim (int) – Total number of output columns across all features (fitted).

Notes

Each original feature \(x\) is transformed into output_dim features of the form

\[\tanh\!\left(\frac{x - c}{s}\right),\]

where \(c\) is a center value and \(s\) (scale) controls the spread of the activation on the non-target-aware path; the target-aware default may place a data-driven number.

Examples

>>> import numpy as np
>>> from pretab.transformers import TanhExpansionTransformer
>>> X = np.array([[1.0], [2.0], [3.0]])
>>> transformer = TanhExpansionTransformer(output_dim=3, target_aware=False, placement_strategy="uniform")
>>> transformer.fit(X)
TanhExpansionTransformer(...)
>>> transformer.transform(X).shape
(3, 3)
__init__(output_dim=UNSET, scale=1.0, target_aware=False, placement_strategy=UNSET, task='regression', adaptive=False, min_output_dim=UNSET, max_output_dim=UNSET, random_state=None)[source]

Methods

__init__([output_dim, scale, target_aware, ...])

fit(X[, y])

Place per-feature centers from a target-aware selector or quantile/uniform spacing.

fit_transform(X[, y])

Fit to data, then transform it.

get_feature_names_out([input_features])

Return output feature names of the form {feature}_{suffix}{j}.

get_metadata_routing()

Get metadata routing of this object.

get_params([deep])

Get parameters for this estimator.

set_output(*[, transform])

Set output container.

set_params(**params)

Set the parameters of this estimator.

transform(X)

Expand every feature against its centers and stack the results.

Attributes

total_output_dim_

Total number of output columns produced across all input features.

centers_

n_features_in_

adaptive