python 笔记:tslearn (数据部分)

        tslearn 是一个 Python 包,提供用于分析时间序列的机器学习工具。 这个包建立在(因此依赖于)scikit-learn、numpy 和 scipy 库之上。

1 时间序列数据格式

使用to_time_series函数来生成时间序列数据

from tslearn.utils import to_time_series

time_series_lst=[1,3,5,7,9]

time_series_tslearn=to_time_series(time_series_lst)

print(time_series_tslearn,'\n',type(time_series_tslearn),'\n',time_series_tslearn.shape)
'''
[[1.]
 [3.]
 [5.]
 [7.]
 [9.]] 

 
 
 (5, 1)
'''

        可以看出来,在 tslearn 中,时间序列数据只是一个二维 numpy 数组:其第一维对应于时间轴,第二维是特征维数(上述例子中为 1)。

1.1 多个时间序列

        如果我们想操作时间序列集,我们可以使用 to_time_series_dataset 将它们转换为三维数组。

        如果集合中的时间序列大小不相等,则将 NaN 值附加到较短的值,结果数组的形状为 (n_ts, max_sz, d),其中 max_sz 是集合中时间序列的最大大小。

from tslearn.utils import to_time_series_dataset

time_series_lst_1=[1,3,5,7,9]
time_series_lst_2=[2,4,6,8]

time_series_tslearn=to_time_series_dataset([time_series_lst_1,
                                            time_series_lst_2])

time_series_tslearn,time_series_tslearn.shape,type(time_series_tslearn)
'''
(array([[[ 1.],
         [ 3.],
         [ 5.],
         [ 7.],
         [ 9.]],
 
        [[ 2.],
         [ 4.],
         [ 6.],
         [ 8.],
         [nan]]]),

 (2, 5, 1),

 numpy.ndarray)
'''

2 标准时间序列数据(后补)

2.1 UCR_UEA 数据

时间序列分类数据集 Time Series Classification Website

class tslearn.datasets.UCR_UEA_datasets()

tslearn.datasets.UCR_UEA_datasets — tslearn 0.5.2 documentation

2.2 CachedDataset

tslearn.datasets.CachedDatasets — tslearn 0.5.2 documentation

3 从文本文件中导入时间序列数据

如果要从文本文件中导入其他时间序列,预期格式为:

  • 每条线代表一个时间序列(数据集中的时间序列不强制长度相同);
  • 在每一行中,模态由 '|' 字符分隔。 (如果您的数据中只有一种模态,则不用);
  • 在每种模态中,观测值由空格字符分隔。

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

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

        这个表示的含义是:一共有两个时间序列(每一行是一个时间序列)

        其中,第一个时间序列第一维的 单变量时间序列为'1.0 0.0 2.5' ;第二维的 单变量时间序列为 '3.0 2.0 1.0'

        第二个时间序列第一维的单变量时间序列为'1.0 2.0'; 第二维的单变量时间序列为'4.333 2.12'

         读取出来的效果是:

from tslearn.utils import save_time_series_txt, load_time_series_txt

time_series_read=load_time_series_txt('ts_time_series.txt')
time_series_read
'''
array([[[1.   , 3.   ],
        [0.   , 2.   ],
        [2.5  , 1.   ]],

       [[1.   , 4.333],
        [2.   , 2.12 ],
        [  nan,   nan]]])
'''

4 使用数据进行training

        根据 tslearn 标准加载和格式化数据后,下一步就是为机器学习模型提供数据。

        大多数 tslearn 模型都继承自 scikit-learn 基类,因此与它们的交互与与 scikit-learn 模型的交互非常相似。

        

from tslearn.clustering import TimeSeriesKMeans
km = TimeSeriesKMeans(n_clusters=3, metric="dtw")
#表示kmeans使用3作为类别数量来进行聚类,距离函数为dtw
km.fit(time_series_read)

你可能感兴趣的:(python库整理,python,开发语言,后端)