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:
SourceModelSelectorSelect 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:
SourceModelSelectorSelect 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.