入门指南

本教程将指导您格式化您的第一个时间序列数据,导入标准数据集,并使用专门的机器学习算法进行操作。

时间序列格式

首先,让我们看一下tslearn时间序列格式是什么。为此,我们将使用来自tslearn.utilsto_time_series工具:

>>> from tslearn.utils import to_time_series
>>> my_first_time_series = [1, 3, 4, 2]
>>> formatted_time_series = to_time_series(my_first_time_series)
>>> print(formatted_time_series.shape)
(4, 1)

tslearn中,时间序列不过是一个二维的numpy数组,其第一维度对应于时间轴,第二维度是特征维度(默认为1)。

然后,如果我们想要操作时间序列的集合,我们可以使用to_time_series_dataset将它们转换为三维数组。如果集合中的时间序列长度不等,较短的序列会被追加NaN值,结果数组的形状为(n_ts, max_sz, d),其中max_sz是集合中时间序列的最大长度。

>>> from tslearn.utils import to_time_series_dataset
>>> my_first_time_series = [1, 3, 4, 2]
>>> my_second_time_series = [1, 2, 4, 2]
>>> formatted_dataset = to_time_series_dataset([my_first_time_series, my_second_time_series])
>>> print(formatted_dataset.shape)
(2, 4, 1)
>>> my_third_time_series = [1, 2, 4, 2, 2]
>>> formatted_dataset = to_time_series_dataset([my_first_time_series,
                                                my_second_time_series,
                                                my_third_time_series])
>>> print(formatted_dataset.shape)
(3, 5, 1)

导入标准时间序列数据集

如果你的目标是实验标准时间序列数据集,你应该看看 tslearn.datasets

>>> from tslearn.datasets import UCR_UEA_datasets
>>> X_train, y_train, X_test, y_test = UCR_UEA_datasets().load_dataset("TwoPatterns")
>>> print(X_train.shape)
(1000, 128, 1)
>>> print(y_train.shape)
(1000,)

请注意,在处理时间序列数据集时,使用tslearn.preprocessing中的工具来重新缩放时间序列可能会很有用。

如果你想从文本文件导入其他时间序列,预期的格式是:

  • 每一行代表一个单一的时间序列(并且来自数据集的时间序列不必具有相同的长度);

  • 在每一行中,模态之间用|字符分隔(如果您的数据中只有一个模态,则无用);

  • 在每个模态中,观测值之间用空格字符分隔。

这是一个存储两个维度为2的时间序列文件的示例(第一个时间序列的长度为3,第二个时间序列的长度为2)。

1.0 0.0 2.5|3.0 2.0 1.0
1.0 2.0|4.333 2.12

要读取/写入此格式,请查看tslearn.utils

>>> from tslearn.utils import save_time_series_txt, load_time_series_txt
>>> time_series_dataset = load_time_series_txt("path/to/your/file.txt")
>>> save_time_series_txt("path/to/another/file.txt", dataset_to_be_saved)

玩转你的数据

一旦你的数据根据tslearn标准加载并格式化,下一步就是将其输入机器学习模型。大多数tslearn模型继承自scikit-learn基类,因此与它们的交互与与scikit-learn模型的交互非常相似,除了数据集不是二维数组,而是tslearn时间序列数据集(三维数组或二维数组的列表)。

>>> from tslearn.clustering import TimeSeriesKMeans
>>> km = TimeSeriesKMeans(n_clusters=3, metric="dtw")
>>> km.fit(X_train)

如上所示,将机器学习方法应用于时间序列数据集时的一个关键参数是要使用的度量标准。您可以在本文档的专用部分中了解更多信息。