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。
下表简要描述了每一列
标识符:标识符名称,前面是
@
,没有空格。描述:描述标识符的用途。
值:标识符可以取的所有可能值。
附加注释:编写此标识符时需要记住的一些特殊之处。
示例:给定标识符的值示例。
标识符 |
描述 |
值 |
附加注释 |
示例 |
---|---|---|---|---|
|
数据集的名称。 |
任何 |
值不能包含空格 |
|
|
是否存在时间戳。 |
|
只能是 |
|
|
是否存在缺失值。 |
|
只能是 |
|
|
时间序列是否只有一个维度。 |
|
只能是 |
|
|
变量的数量。 |
|
仅当 |
6 |
|
每个实例是否长度相等。 |
|
只能是 |
|
|
每个实例中的时间戳数量。 |
|
仅当 |
100 |
|
是否存在目标标签。 |
|
仅适用于回归数据;只能是 |
|
|
是否存在类别标签。 |
|
仅适用于分类数据;当为 |
|
|
标记数据的开始。 |
- |
数据从下一行开始。 |
- |
说明#
本节提供了创建与 sktime
兼容的 .ts
格式规范文件的完整说明。
请记住,这基于您已经拥有符合预期格式的数据集的前提。
创建数据集时需要注意的几点
标识符的总体顺序不重要,例外是
@data
应该是最后一个字符串标识符。一行只能包含一个标识符-值对。
包含标识符的行必须以该标识符开头。
唯一允许有空格的地方是标识符与其对应值之间。
避免在行之间出现换行符。
遵循“注释、标识符、数据”的顺序
- 创建一个空文件
打开您喜欢的文本编辑器(记事本也可以)。我们会先将内容添加到这个文件,最后保存为
.ts
文件。
- 编写描述性注释
文件的最初几行最好用于描述数据集。这是可选的,但能提供数据集的上下文。注释行以
#
开头。
添加分类和回归数据共有的元数据
添加问题名称:例如:
@problemName Example
添加关于是否存在缺失内容的信息:例如:
@missing false
添加关于时间戳的信息:例如:
@timestamps true
添加关于数据集是否只有一个维度信息:例如:
@univariate false
由于单变量(univariate)例如为
false
,则添加关于维度数量的信息,否则跳过:例如:@dimension 3
添加关于所有实例是否长度相等的信息:例如:
@equallength true
如果上述为
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
的信息,请访问 教程页面。