gluonts.dataset.split 模块#

训练/测试拆分器#

此模块定义了将整个数据集拆分为训练子集和测试子集的策略。 split() 函数也可用于触发其逻辑。

对于所有时间序列都以相同时间点开始和结束的统一数据集,可以使用 OffsetSplitter

splitter = OffsetSplitter(offset=7)
train, test_template = splitter.split(whole_dataset)

对于所有其他数据集,可以使用更灵活的 DateSplitter

splitter = DateSplitter(
    date=pd.Period('2018-01-31', freq='D')
)
train, test_template = splitter.split(whole_dataset)

在上面的示例中,train 输出是一个可用于训练目的的常规 Datasettest_template 可以按如下方式生成测试实例

test_dataset = test_template.generate_instances(
    prediction_length=7,
    windows=2,
)

windows 参数控制从原始数据集中的每个条目生成多少个测试窗口。每个窗口将从拆分点之后开始,因此不包含任何训练数据。默认情况下,窗口不重叠,但这可以通过可选参数 distance 进行控制。

test_dataset = test_template.generate_instances(
    prediction_length=7,
    windows=2,
    distance=3, # windows are three time steps apart from each other
)
class gluonts.dataset.split.AbstractBaseSplitter[source]#

基类: abc.ABC

所有其他拆分器的基类。

generate_test_pairs(dataset: gluonts.dataset.Dataset, prediction_length: int, windows: int = 1, distance: Optional[int] = None, max_history: Optional[int] = None) Generator[Tuple[Dict[str, Any], Dict[str, Any]], None, None][source]#
generate_training_entries(dataset: gluonts.dataset.Dataset) Generator[Dict[str, Any], None, None][source]#
split(dataset: gluonts.dataset.Dataset) Tuple[gluonts.dataset.split.TrainingDataset, gluonts.dataset.split.TestTemplate][source]#
abstract test_pair(entry: Dict[str, Any], prediction_length: int, offset: int = 0) Tuple[Dict[str, Any], Dict[str, Any]][source]#
abstract training_entry(entry: Dict[str, Any]) Dict[str, Any][source]#
class gluonts.dataset.split.DateSplitter(date: pandas._libs.tslibs.period.Period)[source]#

基类: gluonts.dataset.split.AbstractBaseSplitter

一个基于 pandas.Period 划分训练和测试数据的拆分器。

从此类获取的训练条目将仅包含截至(包括)给定 date 的观测值。

参数

date (pandas._libs.tslibs.period.Period) – 确定训练数据结束位置的 pandas.Period

date: pandas._libs.tslibs.period.Period#
test_pair(entry: Dict[str, Any], prediction_length: int, offset: int = 0) Tuple[Dict[str, Any], Dict[str, Any]][source]#
training_entry(entry: Dict[str, Any]) Dict[str, Any][source]#
class gluonts.dataset.split.InputDataset(test_data: gluonts.dataset.split.TestData)[source]#

基类: object

test_data: gluonts.dataset.split.TestData#
class gluonts.dataset.split.LabelDataset(test_data: gluonts.dataset.split.TestData)[source]#

基类: object

test_data: gluonts.dataset.split.TestData#
class gluonts.dataset.split.OffsetSplitter(offset: int)[source]#

基类: gluonts.dataset.split.AbstractBaseSplitter

一个基于固定整数偏移量划分训练和测试数据的拆分器。

参数

offset (int) – 确定训练数据结束位置的偏移量。正偏移量表示从每个序列开始有多少个观测值应包含在训练片段中;负偏移量表示从每个序列结束前应从训练片段中排除多少个观测值。

offset: int#
test_pair(entry: Dict[str, Any], prediction_length: int, offset: int = 0) Tuple[Dict[str, Any], Dict[str, Any]][source]#
training_entry(entry: Dict[str, Any]) Dict[str, Any][source]#
class gluonts.dataset.split.TestData(dataset: gluonts.dataset.Dataset, splitter: gluonts.dataset.split.AbstractBaseSplitter, prediction_length: int, windows: int = 1, distance: Optional[int] = None, max_history: Optional[int] = None)[source]#

基类: object

用于包装测试数据的可迭代类型。

TestData 对象的元素是 (input, label) 对,其中 input 是模型的输入数据,而 label 是模型应该预测的未来真实值。

参数
  • dataset (gluonts.dataset.Dataset) – 用于测试的完整数据集。

  • splitter (gluonts.dataset.split.AbstractBaseSplitter) – 一个特定的拆分器,知道如何划分训练和测试数据。

  • prediction_length (int) – 测试数据中预测区间的长度。

  • windows (int) – 指示为每个原始数据集条目生成多少个测试窗口。

  • distance (Optional[int]) – 这实际上是为每个原始数据集条目生成的每个测试窗口的起始点之间的差异。

  • max_history (Optional[int]) – 如果给定,测试集中的所有条目都具有最大长度 max_history。这可以用于生成更小的文件大小。

dataset: gluonts.dataset.Dataset#
distance: Optional[int] = None#
property input: gluonts.dataset.split.InputDataset#
property label: gluonts.dataset.split.LabelDataset#
max_history: Optional[int] = None#
prediction_length: int#
splitter: gluonts.dataset.split.AbstractBaseSplitter#
windows: int = 1#
class gluonts.dataset.split.TestTemplate(dataset: gluonts.dataset.Dataset, splitter: gluonts.dataset.split.AbstractBaseSplitter)[source]#

基类: object

用于生成测试数据的类。

参数
dataset: gluonts.dataset.Dataset#
generate_instances(prediction_length: int, windows: int = 1, distance: Optional[int] = None, max_history: Optional[int] = None) gluonts.dataset.split.TestData[source]#

生成测试数据集的迭代器,其中包括输入部分和标签部分。

参数
  • prediction_length – 测试数据中预测区间的长度。

  • windows – 指示为每个原始数据集条目生成多少个测试窗口。

  • distance – 这实际上是为每个原始数据集条目生成的每个测试窗口的起始点之间的差异。

  • max_history – 如果给定,测试集中的所有条目都具有最大长度 max_history。这可以用于生成更小的文件大小。

splitter: gluonts.dataset.split.AbstractBaseSplitter#
class gluonts.dataset.split.TrainingDataset(dataset: gluonts.dataset.Dataset, splitter: gluonts.dataset.split.AbstractBaseSplitter)[source]#

基类: object

dataset: gluonts.dataset.Dataset#
splitter: gluonts.dataset.split.AbstractBaseSplitter#
gluonts.dataset.split.periods_between(start: pandas._libs.tslibs.period.Period, end: pandas._libs.tslibs.period.Period) int[source]#

计算 startend 之间(包括两端)有多少个周期。频率取自 start

例如

>>> start = pd.Period("2021-01-01 00", freq="2H")
>>> end = pd.Period("2021-01-01 11", "2H")
>>> periods_between(start, end)
6
>>> start = pd.Period("2021-03-03 23:00", freq="30T")
>>> end = pd.Period("2021-03-04 03:29", freq="30T")
>>> periods_between(start, end)
9
gluonts.dataset.split.slice_data_entry(entry: Dict[str, Any], slice_: slice, prediction_length: int = 0) Dict[str, Any][source]#
gluonts.dataset.split.split(dataset: gluonts.dataset.Dataset, *, offset: Optional[int] = None, date: Optional[pandas._libs.tslibs.period.Period] = None) Tuple[gluonts.dataset.split.TrainingDataset, gluonts.dataset.split.TestTemplate][source]#
gluonts.dataset.split.to_integer_slice(slice_: slice, start: pandas._libs.tslibs.period.Period) slice[source]#

给定序列的起始时间戳,返回具有整数边界的等效切片。

gluonts.dataset.split.to_positive_slice(slice_: slice, length: int) slice[source]#

给定序列的长度,返回具有正数边界的等效切片。