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
输出是一个可用于训练目的的常规 Dataset
;test_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]#
- 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#
- 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#
- 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#
- windows: int = 1#
- class gluonts.dataset.split.TestTemplate(dataset: gluonts.dataset.Dataset, splitter: gluonts.dataset.split.AbstractBaseSplitter)[source]#
基类:
object
用于生成测试数据的类。
- 参数
dataset (gluonts.dataset.Dataset) – 用于测试的完整数据集。
splitter (gluonts.dataset.split.AbstractBaseSplitter) – 一个特定的拆分器,知道如何划分训练和测试数据。
- 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。这可以用于生成更小的文件大小。
- class gluonts.dataset.split.TrainingDataset(dataset: gluonts.dataset.Dataset, splitter: gluonts.dataset.split.AbstractBaseSplitter)[source]#
基类:
object
- dataset: gluonts.dataset.Dataset#
- gluonts.dataset.split.periods_between(start: pandas._libs.tslibs.period.Period, end: pandas._libs.tslibs.period.Period) int [source]#
计算
start
和end
之间(包括两端)有多少个周期。频率取自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]#