Skip to content

ICLConfig

Defines inference parameters for ICLEstimator. Parallel to GNNConfig, but the two share no base class — there is no training loop, so ICLConfig has no epochs, learning rate, or GNN architecture settings.

ParameterTypeDescriptionOptional
n_estimatorsintEnsemble size. More = better quality, slower inference. Must be ≥ 1. Default: 8.Yes
random_stateintSeed for ensemble generation and context sampling. Default: 42.Yes
dfs_max_depthintHow many “hops” across related tables to pull features from before running ICL. Must be between 1 and 3. For example, with a customers/orders/order_items schema, depth 1 aggregates each customer’s own orders; depth 2 also reaches into order_items through orders. Higher depth means richer features but many more columns and slower runs — depth 2 is the safe default, and depth 3 can produce explosive column counts (though the final feature count is capped at 500 before inference). Ignored for TabularDataset (no DFS in the flat pipeline). Default: 2.Yes
sample_sizeintMax context rows sampled from the context table before feature generation. Must be ≥ 1, or None to use all rows. Default: None.Yes
sampling_strategystr | SamplingStrategyHow to draw the context sample. See SamplingStrategy values below. Default: SamplingStrategy.STRATIFIED.Yes
device"cpu" | "cuda"Inference device. Default: "cpu"; use "cuda" when a GPU is available.Yes
clamp_minintMin percentile clamp (0–100) for regression predictions and quantiles, computed from the context labels — e.g. 1 clamps below the 1st percentile of the context data. 0 (default) clamps to the observed minimum. Must satisfy clamp_min ≤ clamp_max. Default: 0.Yes
clamp_maxintMax percentile clamp (0–100) for regression predictions and quantiles, computed from the context labels. 100 (default) clamps to the observed maximum. Default: 100.Yes
regression_output"point" | "distribution""point" (default) returns a single predicted value per row. "distribution" additionally returns quantiles of the predicted distribution (see quantile_levels). Default: "point".Yes
quantile_levelsList[float]Quantile levels to output when regression_output="distribution", or for forecasting tasks. Each value must be strictly between 0 and 1, with no duplicates. Defaults to [0.1, 0.5, 0.9] when None.Yes
norm_methodsstr | List[str]Feature normalization method(s) applied before inference. One of "none", "power" (Yeo-Johnson), "quantile", "quantile_rtdl", "robust", or a list to use different methods across ensemble members. None (default) uses the default of ["none", "power"].Yes
ValueDescription
SamplingStrategy.STRATIFIED ("stratified")Random sample that preserves each class’s proportion in the source data. Regression/forecasting labels are binned into quantiles first and stratified on the bins. Default.
SamplingStrategy.MOST_RECENT ("most_recent")Newest rows by time column. Only valid if the task has a time_column — otherwise raises a ValidationError at predict()/score() time.
SamplingStrategy.MIXED ("mixed")50% most-recent + 50% stratified. Same time_column requirement as MOST_RECENT.
SamplingStrategy.RANDOM ("random")Uniform random sample, no class balancing or recency.
SamplingStrategy.BALANCED ("balanced")Equal number of rows per class, unlike STRATIFIED which preserves the source class proportions. Classes with fewer rows than their equal share contribute everything they have; the unspent budget is topped up at random from other classes. Classification only — raises a ValueError for regression/forecasting tasks, which have no fixed set of classes to equalize.

An instance of the ICLConfig class.

from relationalai_predictive import ICLConfig, SamplingStrategy
config = ICLConfig(
n_estimators=16,
dfs_max_depth=2,
sample_size=5000,
sampling_strategy=SamplingStrategy.MOST_RECENT,
device="cuda",
regression_output="distribution",
quantile_levels=[0.1, 0.5, 0.9],
)
NameDescriptionReturns
to_dictWrites ICLConfig contents to a dictionary.Dict
model_config_dict = config.to_dict()