Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
past_is_pad = np.array([[0] * len(target)]).transpose()
past_observed_target = np.array(
[[1] * len(target), [1] * len(target)]
).transpose()
ds = gluonts.dataset.common.ListDataset(
# Mimic output from InstanceSplitter
data_iter=[
{
"start": "2012-01-01",
"target": multi_dim_target,
"past_target": multi_dim_target,
"future_target": multi_dim_target,
"past_is_pad": past_is_pad,
f"past_{FieldName.OBSERVED_VALUES}": past_observed_target,
}
],
freq="1D",
one_dim_target=False,
)
return ds
context_length = (
int(context_length_frac * history_length)
if context_length_frac is not None
else None
)
predictor = NPTSPredictor(
prediction_length=pred_length,
context_length=context_length,
freq=freq,
kernel_type=KernelType.exponential,
feature_scale=feature_scale,
use_seasonal_model=use_seasonal_model,
)
dataset = ListDataset(
[{"start": str(train_ts.index[0]), "target": train_ts.values}],
freq=freq,
)
# validate that the predictor works with targets with NaNs
_test_nans_in_target(predictor, dataset)
forecast = next(predictor.predict(dataset, num_samples=2000))
train_targets = (
train_ts.values
if context_length is None
else train_ts.values[-min(history_length, context_length) :]
)
targets_outside_context = (
None
def test_feat_dynamic_real_bad_size():
params = dict(freq="1D", prediction_length=3, prophet_params={})
dataset = ListDataset(
data_iter=[
{
"start": "2017-01-01",
"target": np.array([1.0, 2.0, 3.0, 4.0]),
"feat_dynamic_real": np.array(
[
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0],
]
),
}
],
freq=params["freq"],
)
with pytest.raises(AssertionError) as excinfo:
90,
100,
]
).tolist()
np.random.shuffle(target)
multi_dim_target = np.array([target, target]).transpose()
past_is_pad = np.array([[0] * len(target)]).transpose()
past_observed_target = np.array(
[[1] * len(target), [1] * len(target)]
).transpose()
ds = gluonts.dataset.common.ListDataset(
# Mimic output from InstanceSplitter
data_iter=[
{
"start": "2012-01-01",
"target": multi_dim_target,
"past_target": multi_dim_target,
"future_target": multi_dim_target,
"past_is_pad": past_is_pad,
f"past_{FieldName.OBSERVED_VALUES}": past_observed_target,
}
],
freq="1D",
one_dim_target=False,
)
return ds
[14.0, 15.0, 16.0],
[15.0, 16.0, 17.0],
[16.0, 17.0, 18.0],
[17.0, 18.0, 19.0],
]
)
assert (
np.linalg.norm(future_target - transformed_data["future_target"])
< 1e-5
), "the forking sequence target should be computed correctly."
trans_oob = transform.Chain(
trans=[
transform.AddAgeFeature(
target_field=FieldName.TARGET,
output_field="age",
pred_length=10,
),
ForkingSequenceSplitter(
train_sampler=TSplitSampler(),
time_series_fields=["age"],
enc_len=20,
dec_len=20,
),
]
)
transformed_data_oob = next(iter(trans_oob(iter(ds), is_train=True)))
assert (
np.sum(transformed_data_oob["future_target"]) - np.sum(np.arange(20))
def create_transformation(self):
# Model specific input transform
# Here we use a transformation that randomly
# selects training samples from all series.
return InstanceSplitter(
target_field=FieldName.TARGET,
is_pad_field=FieldName.IS_PAD,
start_field=FieldName.START,
forecast_start_field=FieldName.FORECAST_START,
train_sampler=ExpectedNumInstanceSampler(num_instances=1),
past_length=self.context_length,
future_length=self.prediction_length,
)
def assert_valid_param(param_name: str, param_values: List[Any]) -> None:
try:
for x in param_values:
Trainer(**{param_name: x})
except Exception as e:
pytest.fail(f'Unexpected exception when initializing Trainer: "{e}"')
raise e
from gluonts.dataset.repository.datasets import get_dataset
from gluonts.model.deepar import DeepAREstimator
from gluonts.trainer import Trainer
from gluonts.evaluation import Evaluator
from gluonts.evaluation.backtest import backtest_metrics
# We use electricity in the paper but that would take too long to run in
# the unit test
dataset_info, train_ds, test_ds = constant_dataset()
meta = dataset_info.metadata
estimator = DeepAREstimator(
freq=meta.freq,
prediction_length=1,
trainer=Trainer(epochs=1, batch_size=32),
)
predictor = estimator.train(train_ds)
evaluator = Evaluator(quantiles=(0.1, 0.5, 0.9))
agg_metrics, item_metrics = backtest_metrics(
train_dataset=train_ds,
test_dataset=test_ds,
forecaster=predictor,
evaluator=evaluator,
)
def test_distribution():
"""
Makes sure additional tensors can be accessed and have expected shapes
"""
prediction_length = ds_info.prediction_length
estimator = DeepAREstimator(
freq=freq,
prediction_length=prediction_length,
trainer=Trainer(epochs=1, num_batches_per_epoch=1),
distr_output=StudentTOutput(),
)
train_output = estimator.train_model(train_ds)
# todo adapt loader to anomaly detection use-case
batch_size = 2
num_samples = 3
training_data_loader = TrainDataLoader(
dataset=train_ds,
transform=train_output.transformation,
batch_size=batch_size,
num_batches_per_epoch=estimator.trainer.num_batches_per_epoch,
ctx=mx.cpu(),
)
def assert_invalid_param(
param_name: str, param_values: List[Any], exp_msg: str
) -> None:
for x in param_values:
with pytest.raises(AssertionError) as excinfo:
Trainer(**{param_name: x})
assert exp_msg in str(excinfo.value)