nirs4all.operators.models.selection module

Source model selection strategies for meta-model stacking.

This module provides flexible strategies for selecting which models to use as sources in a stacking ensemble.

Available selectors:
  • AllPreviousModelsSelector: Use all models from previous steps (default)

  • ExplicitModelSelector: Use explicitly named models

  • TopKByMetricSelector: Use top K models by validation metric

  • DiversitySelector: Select diverse models by class type

Example

>>> from nirs4all.operators.models.selection import (
...     AllPreviousModelsSelector,
...     TopKByMetricSelector,
...     SelectorFactory
... )
>>>
>>> # Default: all previous models
>>> selector = AllPreviousModelsSelector()
>>>
>>> # Top 3 by RMSE
>>> selector = TopKByMetricSelector(k=3, metric="rmse")
>>>
>>> # Using factory
>>> selector = SelectorFactory.create("top_k", k=5, metric="r2")
class nirs4all.operators.models.selection.DiversitySelector(max_per_class: int = 1, preferred_classes: list[str] | None = None)[source]

Bases: SourceModelSelector

Select diverse models by class type to maximize ensemble diversity.

Ensures the stacking ensemble includes different types of models rather than multiple similar models.

Variables:
  • max_per_class – Maximum models per class type.

  • preferred_classes – Optional list of preferred class names.

Example

>>> selector = DiversitySelector(
...     max_per_class=2,
...     preferred_classes=["PLSRegression", "RandomForestRegressor"]
... )
select(candidates: list[ModelCandidate], context: ExecutionContext, prediction_store: Predictions) → list[ModelCandidate][source]

Select diverse models by class type.

Parameters:
  • candidates – List of candidate models.

  • context – Execution context.

  • prediction_store – Predictions store (unused).

Returns:

List of diverse models with at most max_per_class per type.

class nirs4all.operators.models.selection.TopKByMetricSelector(k: int, metric: str = 'val_score', ascending: bool | None = None, per_class: bool = False)[source]

Bases: SourceModelSelector

Select top K models by a validation metric.

Ranks models by their validation score and selects the top K performers.

Variables:
  • k – Number of top models to select.

  • metric – Metric to rank by (e.g., “rmse”, “r2”, “accuracy”).

  • ascending – Sort direction. If None, inferred from metric.

  • per_class – If True, select top K per model class (for diversity).

Example

>>> selector = TopKByMetricSelector(k=3, metric="rmse", ascending=True)
select(candidates: list[ModelCandidate], context: ExecutionContext, prediction_store: Predictions) → list[ModelCandidate][source]

Select top K models by metric.

Parameters:
  • candidates – List of candidate models.

  • context – Execution context.

  • prediction_store – Predictions store (unused).

Returns:

Top K models sorted by metric.