nirs4all.synthesis.targets module

Target generation for synthetic NIRS datasets.

This module provides tools for generating target variables for regression and classification tasks, with configurable distributions and class separation.

Example

>>> from nirs4all.synthesis.targets import TargetGenerator
>>>
>>> generator = TargetGenerator(random_state=42)
>>>
>>> # Regression targets
>>> y = generator.regression(
...     n_samples=100,
...     concentrations=C,  # From spectra generation
...     distribution="lognormal",
...     range=(0, 100)
... )
>>>
>>> # Classification with separable classes
>>> y = generator.classification(
...     n_samples=100,
...     concentrations=C,
...     n_classes=3,
...     separation=2.0
... )
class nirs4all.synthesis.targets.ClassSeparationConfig(separation: float = 1.5, method: Literal['component', 'shift', 'intensity'] = 'component', noise: float = 0.1)[source]

Bases: object

Configuration for class separation in classification tasks.

Variables:
  • separation (float) – Separation factor (higher = more separable). Values around 0.5-1.0 create overlapping classes. Values around 2.0-3.0 create well-separated classes.

  • method (Literal['component', 'shift', 'intensity']) – How to create class differences: - “component”: Different component concentration profiles per class. - “shift”: Systematic spectral shifts between classes. - “intensity”: Different overall intensity levels.

  • noise (float) – Noise level to add to class boundaries.

method: Literal['component', 'shift', 'intensity'] = 'component'
noise: float = 0.1
separation: float = 1.5
nirs4all.synthesis.targets.generate_classification_targets(n_samples: int, concentrations: ndarray | None = None, *, random_state: int | None = None, n_classes: int = 2, class_weights: list[float] | None = None, separation: float = 1.5) → ndarray[source]

Convenience function for generating classification targets.

Parameters:
  • n_samples – Number of samples.

  • concentrations – Component concentrations (optional).

  • random_state – Random seed.

  • n_classes – Number of classes.

  • class_weights – Class proportions.

  • separation – Class separation factor.

Returns:

Integer class labels array.

nirs4all.synthesis.targets.generate_regression_targets(n_samples: int, concentrations: ndarray | None = None, *, random_state: int | None = None, distribution: Literal['uniform', 'normal', 'lognormal', 'bimodal'] = 'uniform', range: tuple[float, float] | None = None) → ndarray[source]

Convenience function for generating regression targets.

Parameters:
  • n_samples – Number of samples.

  • concentrations – Component concentrations (optional).

  • random_state – Random seed.

  • distribution – Target distribution type.

  • range – Value range (min, max).

Returns:

Target values array.