mirror of
https://github.com/wassname/pytorch-ts.git
synced 2026-07-10 06:44:05 +08:00
151 lines
4.4 KiB
Python
151 lines
4.4 KiB
Python
# Copyright 2018 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License").
|
|
# You may not use this file except in compliance with the License.
|
|
# A copy of the License is located at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# or in the "license" file accompanying this file. This file is distributed
|
|
# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
|
|
# express or implied. See the License for the specific language governing
|
|
# permissions and limitations under the License.
|
|
|
|
# Standard library imports
|
|
import pytest
|
|
import numpy as np
|
|
|
|
# First-party imports
|
|
from pts.dataset import ListDataset, MultivariateGrouper
|
|
|
|
UNIVARIATE_TS = [
|
|
[
|
|
{"start": "2014-09-07", "target": [1, 2, 3, 4]},
|
|
{"start": "2014-09-07", "target": [5, 6, 7, 8]},
|
|
],
|
|
[
|
|
{"start": "2014-09-07", "target": [1, 2, 3, 4]},
|
|
{"start": "2014-09-08", "target": [5, 6, 7, 8]},
|
|
],
|
|
[
|
|
{"start": "2014-09-07", "target": [1, 2, 3, 4]},
|
|
{"start": "2014-09-07", "target": [0]},
|
|
],
|
|
[
|
|
{"start": "2014-09-07", "target": [1, 2, 3, 4]},
|
|
{"start": "2014-09-01", "target": [0]},
|
|
],
|
|
[
|
|
{"start": "2014-09-07", "target": [1, 2, 3, 4]},
|
|
{"start": "2014-09-08", "target": [5, 6, 7, 8]},
|
|
],
|
|
]
|
|
|
|
MULTIVARIATE_TS = [
|
|
[{"start": "2014-09-07", "target": [[1, 2, 3, 4], [5, 6, 7, 8]]}],
|
|
[
|
|
{
|
|
"start": "2014-09-07",
|
|
"target": [[1, 2, 3, 4, 2.5], [6.5, 5, 6, 7, 8]],
|
|
}
|
|
],
|
|
[{"start": "2014-09-07", "target": [[1, 2, 3, 4], [0, 0, 0, 0]]}],
|
|
[
|
|
{
|
|
"start": "2014-09-01",
|
|
"target": [
|
|
[2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 1, 2, 3, 4],
|
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
|
],
|
|
}
|
|
],
|
|
[{"start": "2014-09-07", "target": [[1, 2, 3, 4, 0], [0, 5, 6, 7, 8]]}],
|
|
]
|
|
|
|
TRAIN_FILL_RULE = [np.mean, np.mean, np.mean, np.mean, lambda x: 0.0]
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"univariate_ts, multivariate_ts, train_fill_rule",
|
|
zip(UNIVARIATE_TS, MULTIVARIATE_TS, TRAIN_FILL_RULE),
|
|
)
|
|
def test_multivariate_grouper_train(
|
|
univariate_ts, multivariate_ts, train_fill_rule
|
|
) -> None:
|
|
univariate_ds = ListDataset(univariate_ts, freq="1D")
|
|
multivariate_ds = ListDataset(
|
|
multivariate_ts, freq="1D", one_dim_target=False
|
|
)
|
|
|
|
grouper = MultivariateGrouper(train_fill_rule=train_fill_rule)
|
|
assert (
|
|
list(grouper(univariate_ds))[0]["target"]
|
|
== list(multivariate_ds)[0]["target"]
|
|
).all()
|
|
|
|
assert (
|
|
list(grouper(univariate_ds))[0]["start"]
|
|
== list(multivariate_ds)[0]["start"]
|
|
)
|
|
|
|
|
|
UNIVARIATE_TS_TEST = [
|
|
[
|
|
{"start": "2014-09-07", "target": [1, 2, 3, 4]},
|
|
{"start": "2014-09-07", "target": [5, 6, 7, 8]},
|
|
{"start": "2014-09-08", "target": [0, 1, 2, 3]},
|
|
{"start": "2014-09-08", "target": [4, 5, 6, 7]},
|
|
],
|
|
[
|
|
{"start": "2014-09-07", "target": [1, 2, 3, 4]},
|
|
{"start": "2014-09-07", "target": [5, 6, 7, 8]},
|
|
{"start": "2014-09-08", "target": [0, 1, 2, 3]},
|
|
{"start": "2014-09-08", "target": [4, 5, 6, 7]},
|
|
],
|
|
]
|
|
|
|
MULTIVARIATE_TS_TEST = [
|
|
[
|
|
{"start": "2014-09-07", "target": [[1, 2, 3, 4], [5, 6, 7, 8]]},
|
|
{"start": "2014-09-07", "target": [[0, 0, 1, 2, 3], [0, 4, 5, 6, 7]]},
|
|
],
|
|
[
|
|
{"start": "2014-09-07", "target": [[5, 6, 7, 8]]},
|
|
{"start": "2014-09-07", "target": [[0, 4, 5, 6, 7]]},
|
|
],
|
|
]
|
|
|
|
TEST_FILL_RULE = [lambda x: 0.0, lambda x: 0.0]
|
|
MAX_TARGET_DIM = [2, 1]
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
"univariate_ts, multivariate_ts, test_fill_rule, max_target_dim",
|
|
zip(
|
|
UNIVARIATE_TS_TEST,
|
|
MULTIVARIATE_TS_TEST,
|
|
TEST_FILL_RULE,
|
|
MAX_TARGET_DIM,
|
|
),
|
|
)
|
|
def test_multivariate_grouper_test(
|
|
univariate_ts, multivariate_ts, test_fill_rule, max_target_dim
|
|
) -> None:
|
|
univariate_ds = ListDataset(univariate_ts, freq="1D")
|
|
multivariate_ds = ListDataset(
|
|
multivariate_ts, freq="1D", one_dim_target=False
|
|
)
|
|
|
|
grouper = MultivariateGrouper(
|
|
test_fill_rule=test_fill_rule,
|
|
num_test_dates=2,
|
|
max_target_dim=max_target_dim,
|
|
)
|
|
|
|
for grouped_data, multivariate_data in zip(
|
|
grouper(univariate_ds), multivariate_ds
|
|
):
|
|
assert (grouped_data["target"] == multivariate_data["target"]).all()
|
|
|
|
assert grouped_data["start"] == multivariate_data["start"]
|