ts
文件格式 v1.0#
概述#
本文档包含以下内容:
介绍:什么是
.ts
文件,何时以及为何使用它。描述:
.ts
文件的各个组成部分是什么。说明:如何创建自己的
.ts
文件。插图:一个运行示例,用于总结上述部分。
版本历史#
v1.0 - 2022-10-08 - 作者: Sagar Mishra
介绍#
本文档规范了在 .ts
文件格式中使用的字符串标识符。以 utf-8
编码,.ts
文件存储时间序列数据及其相应的元数据(通过字符串标识符指定),并且可以通过任何基本编辑器如记事本打开以进行可视化检查。字符串标识符指的是文件中以 @
开头的字符串。
.ts
文件按以下顺序包含信息块:
- 描述块。
它包含任意数量的以
#
开头的连续行。每个#
后面跟随一个任意的(utf-8)符号序列。ts
规范没有规定描述块的任何内容,但通常会包含文件中数据集的描述。例如:完整的数据字典、引用等。更多详情请参见 描述块的子节。
- 一个元数据块。
它包含以
@
开头的连续行。每个@
后面直接跟随一个没有空格的字符串标识符 (@<identifier>
),然后是该标识符的适当值,值的类型取决于标识符的类型。所有字符串标识符的出现顺序没有严格要求,除了@data
必须在这个块的末尾。这个块中的行数取决于数据集的某些属性(例如:如果数据集是多维的,则需要额外的行来指定维度数量)。有关更多详细信息,请参阅 元数据块的子节。
- 一个数据集块。
它包含表示数据集的浮点值列表。在最简单的情况下(当时间戳不存在时),序列的值以逗号分隔的列表表示,每个值的索引相对于其在列表中的位置(0, 1, …, m)。一个实例可能包含1到多个维度,其中实例以行分隔,实例内的维度以冒号分隔(:)。如果存在时间戳,则序列的单个数据包含在圆括号内,如``(YYYY-MM-DD HH:mm:ss,<value>)``。响应变量位于每个实例的末尾,并通过冒号分隔。要理解数据表示,请访问 加载数据。
以下是从 Basic Motion.ts 中提取的内容,展示了所有三个块:
1#The data was generated as part of a student project where four students performed four activities whilst wearing a smart watch.
2#The watch collects 3D accelerometer and a 3D gyroscope It consists of four classes, which are walking, resting, running and
3#badminton.
4...
5@problemName BasicMotions
6@timeStamps false
7@missing false
8...
9@data
10-0.740653,-0.740653,10.208449,2.867009,-0.194301,-0.194301,-0.249618,0.516079,-0.255552:Standing
11-0.247409,-0.247409,-0.77129,-0.576154,-0.368484,-0.020851,-0.020851,-0.465607,-0.382975,-0.382975:Walking
12...
描述#
本节描述了 .ts
文件的组成部分。
描述块#
这是一个可选的块,用于为数据集提供上下文。所有行都被 sktime
加载器函数忽略。我们建议用户添加提供数据集上下文的信息,例如数据集是如何收集的、与此数据集相关的许可证类型、引用等。
元数据块#
元数据块由各种字符串标识符组成,用于包含数据集的元数据。sktime
的核心加载/写入函数依赖于它们的存在,以正确地将数据加载到内存中。这对于向不熟悉数据集的其他用户提供数据集信息也很有帮助。
单个字符串标识符的格式为:@<identifier> [value]
,除了 @data
之外,没有尾随信息。
包含在元数据中的信息:
数据集名称
它包含时间戳吗
它是否包含缺失值
它是否只包含一个维度
维数,在多变量问题的情况下
所有实例的长度都相同吗
类的标签
字符串标识符应仅在行首书写,并且必须位于单独的一行。
备注
由于这些数据集通常来自不同的来源(参见 tsregression 和 timeseriesclassification.com),它们的命名约定可能会有轻微的冲突(小写 vs. 驼峰式)。sktime
内部会处理这些不一致性。
对于本文档,我们将仅使用小写字母来表示标识符。
然而,如果你遇到一个尚未解决的不一致问题,请考虑打开一个 issue。
以下是表格中每一列的简要描述:
标识符:标识符名称前加上
@
,中间没有空格。描述:描述标识符的用途。
值:标识符可以取的所有可能值。
附加评论:编写此标识符时需要记住的几个特殊之处。
示例:给定标识符的图示值。
标识符 |
描述 |
值 |
附加评论 |
示例 |
---|---|---|---|---|
|
数据集的名称。 |
任何 |
值不能用空格分隔 |
|
|
是否存在时间戳。 |
|
|
|
|
是否存在缺失值。 |
|
|
|
|
时间序列是否仅有一个维度。 |
|
|
|
|
变量的数量。 |
整数 > 0 |
仅在 |
6 |
|
每个实例是否具有相同的长度。 |
|
|
|
|
每个实例中的时间戳数量。 |
整数 > 0 |
仅在 |
100 |
|
是否存在目标标签。 |
|
仅适用于回归数据;仅 |
|
|
是否存在类别标签。 |
|
专用于分类数据;当 |
|
|
标记数据的开始。 |
- |
数据从下一行开始。 |
- |
说明#
本节提供了为您的数据集创建与 sktime
兼容的格式规范 .ts
文件的完整说明。
请记住,这始于一个假设,即你已经拥有以预期 格式 准备好的数据集。
在创建数据集时需要记住的几点:
标识符的一般顺序 不 重要,除了
@data
应该是最后一个字符串标识符。一行应只包含一个标识符-值对。
包含标识符的行 必须 以它开头。
**唯一**允许有空格的地方是在标识符与其对应值之间。
避免在行之间使用换行符。
遵循“注释、标识符、数据”的顺序
- 创建一个空文件
打开你喜欢的文本编辑器(即使是记事本也可以)。我们将在最终保存为
.ts
文件之前向此文件添加内容。
- 写一个描述性评论
文件的前几行最好用来描述数据集。这是可选的,但可以提供数据集的背景信息。注释行以
#
开头。
添加那些分类和回归数据共有的元数据
添加问题名称:例如:
@problemName Example
添加关于缺少内容的信息:例如:
@missing false
添加关于时间戳的信息:例如:
@timestamps true
如果数据集只有一个维度,请添加信息:例如:
@univariate false
由于单变量例如:
false
,添加关于维数的信息,否则跳过:例如:@dimension 3
添加信息以指示所有实例是否具有相同长度:例如:
@equallength true
如果上述为真,添加实例长度的信息,否则跳过:例如:
@serieslength 5
现在取决于您的数据集是:
基于回归的:添加
@targetlabel
标识符,如果存在响应变量则跟随true
,否则跟随false
。基于分类的:添加
@classlabel
标识符。如果没有响应变量,它的值将为false
。如果为true
,您可以选择以空格分隔的方式提供类标签:例如:三个字符串标签:
@classlabel true good bad neutral
例如:两个整数标签:
@classlabel true 0 1
添加标识符
@data
,然后在换行中跟随值。最后,将文件保存为
<CHOOSE_NAME>.ts
。编码应为utf-8
。
小技巧
文件仍显示为 <CHOSEN_NAME>.ts.txt
?将其重命名为 <CHOSEN_NAME>.txt
,然后打开终端并在该目录中输入 mv <CHOSEN_NAME>.txt <CHOSEN_NAME>.ts
。
插图#
在这里,我们提供了一个运行示例,展示了在执行每个步骤后您的文件将呈现的样子。
我们将用于此的样本数据集如下所示(多维回归数据的单个实例,带有时间戳):
1(2004-08-10 18:00:00,1130.0),(2004-08-10 19:00:00,1217.75),(2004-08-10 20:00:00,1134.75),(2004-08-10 21:00:00,1155.5),
2(2004-08-10 22:00:00,1151.0):(2004-08-10 18:00:00,1144.24),(2004-08-11 19:00:00,1111.25),(2004-08-11 20:00:00,1065.75),
3(2004-08-11 21:00:00,992.5),(2004-08-11 22:00:00,905.76):(2004-08-11 18:00:00,903.35),(2004-08-11 19:00:00,941.0),
4(2004-08-11 20:00:00,1073.6666666667),(2004-08-11 21:00:00,1113.5),(2004-08-11 22:00:00,1100.6):3.2
让我们添加一些注释来为数据集提供一些上下文:
1 # The following dataset is generated using sensor S in the apparatus A as shown in the following
2 # link: https://example.com/. We receive three individual variables, collected within the time duration of 4 hours.
3 # There are no missing values in the dataset and timestamps are also included.
4 # For more information about how data was collected, visit the datacollection.com.
现在,让我们添加分类和回归数据集共有的元数据:
1 # The following dataset is generated using sensor S in the apparatus A as shown in the following
2 # link: https://example.com/. We receive three individual variables, collected within the time duration of 4 hours.
3 # There are no missing values in the dataset and timestamps are also included.
4 # For more information about how data was collected, visit the above mentioned link.
5 @problemName Example
6 @missing false
7 @timestamps true
8 @univariate false
9 @dimension 3
10 @equallength true
11 @serieslength 5
由于我们有一个回归数据集,让我们将
@targetlabel
设为true
:
1 # The following dataset is generated using sensor S in the apparatus A as shown in the following
2 # link: https://example.com/. We receive three individual variables, collected within the time duration of 4 hours.
3 # There are no missing values in the dataset and timestamps are also included.
4 # For more information about how data was collected, visit the above mentioned link.
5 @problemName Example
6 @missing false
7 @timestamps true
8 @univariate false
9 @dimension 3
10 @equallength true
11 @serieslength 5
12 @targetlabel true
最后,让我们通过在新行中添加
@data
来标记数据集的开始。
1 # The following dataset is generated using sensor S in the apparatus A as shown in the following
2 # link: https://example.com/. We receive three individual variables, collected within the time duration of 4 hours.
3 # There are no missing values in the dataset and timestamps are also included.
4 # For more information about how data was collected, visit the above mentioned link.
5 @problemName Example
6 @missing false
7 @timestamps true
8 @univariate false
9 @dimension 3
10 @equallength true
11 @serieslength 5
12 @targetlabel true
13 @data
14 (2004-08-10 18:00:00,1130.0),(2004-08-10 19:00:00,1217.75),(2004-08-10 20:00:00,1134.75),(2004-08-10 21:00:00,1155.5),
15 (2004-08-10 22:00:00,1151.0):(2004-08-10 18:00:00,1144.24),(2004-08-11 19:00:00,1111.25),(2004-08-11 20:00:00,1065.75),
16 (2004-08-11 21:00:00,992.5),(2004-08-11 22:00:00,905.76):(2004-08-11 18:00:00,903.35),(2004-08-11 19:00:00,941.0),
17 (2004-08-11 20:00:00,1073.6666666667),(2004-08-11 21:00:00,1113.5),(2004-08-11 22:00:00,1100.6):3.2
将其保存为
sample.ts
后,文件就可以通过 sktime 加载了。
这总结了如何为 .ts
格式创建字符串标识符。要了解更多关于 sktime
的信息,请访问 教程 页面。