providers
Provider builders for generated data.
Converts GeneratedSeries objects produced by the generator API into
labeled-provider types used by the data layer and downstream detectors.
Public API
build_pandas_labeled_data– Build a multivariatePandasLabeledDatafrom aGeneratedSeries.build_pandas_univariate_labeled_data– Build a univariatePandasLabeledDataby selecting one named feature from aGeneratedSeries.build_plain_multivariate_labeled_data– Build a multivariatePlainMultivariateLabeledData(backed by NumPy arrays) from aGeneratedSeries.build_plain_univariate_labeled_data– Build a univariatePlainUnivariateLabeledData(backed by NumPy arrays) by selecting one named feature from aGeneratedSeries.
Submodules
np_provider– Plain (NumPy-backed) provider builders.pd_provider– Pandas-backed provider builders.
Examples
Build a pandas multivariate labeled provider from a generated series:
>>> from pysatl_cpd.data.generator import (
... GenericSeriesGenerator,
... NormalSpec,
... ScenarioSpec,
... SegmentPlan,
... SegmentSpec,
... build_pandas_labeled_data,
... )
>>> from pysatl_cpd.data.typedefs import StateDescriptor, frozendict
>>> scenario = ScenarioSpec(
... name="example",
... segments=(
... SegmentSpec(plan_name="a", length=50),
... SegmentSpec(plan_name="b", length=30),
... ),
... plans=frozendict(
... a=SegmentPlan(
... distribution=NormalSpec(mean=0.0, std=1.0),
... state=StateDescriptor(type="baseline"),
... ),
... b=SegmentPlan(
... distribution=NormalSpec(mean=3.0, std=1.0),
... state=StateDescriptor(type="shifted"),
... ),
... ),
... )
>>> series = GenericSeriesGenerator(seed=0).generate_from_scenario(scenario)
>>> provider = build_pandas_labeled_data(series, name="example")
>>> list(provider.feature_columns)
['value']
>>> provider.change_points
(50,)
Build a plain univariate labeled provider by selecting a single feature:
>>> from pysatl_cpd.data.generator import (
... GenericSeriesGenerator,
... IndependentColumnsSpec,
... ScenarioSpec,
... SegmentPlan,
... SegmentSpec,
... build_plain_univariate_labeled_data,
... )
>>> from pysatl_cpd.data.typedefs import StateDescriptor, frozendict
>>> scenario = ScenarioSpec(
... name="multi_example",
... segments=(
... SegmentSpec(plan_name="a", length=40),
... SegmentSpec(plan_name="b", length=20),
... ),
... plans=frozendict(
... a=SegmentPlan(
... distribution=IndependentColumnsSpec(
... columns=frozendict(
... x=NormalSpec(mean=0.0, std=1.0),
... y=NormalSpec(mean=10.0, std=2.0),
... ),
... ),
... state=StateDescriptor(type="baseline"),
... ),
... b=SegmentPlan(
... distribution=IndependentColumnsSpec(
... columns=frozendict(
... x=NormalSpec(mean=5.0, std=1.0),
... y=NormalSpec(mean=15.0, std=2.0),
... ),
... ),
... state=StateDescriptor(type="shifted"),
... ),
... ),
... )
>>> series = GenericSeriesGenerator(seed=0).generate_from_scenario(scenario)
>>> provider = build_plain_univariate_labeled_data(
... series, feature_name="y", name="multi_example",
... )
>>> provider.raw_data.shape
(60,)
>>> provider.change_points
(40,)
Notes
All builders accept an optional annotation argument. When omitted, a
TimeseriesAnnotation is constructed automatically from the series metadata
and the supplied name.
The univariate builders raise ValueError if the requested feature_name
is not present in the generated series.
Change-point indices returned by the resulting labeled providers are zero-based.