python 笔记:tslearn (数据部分)
Posted UQI-LIUWJ
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.]]
<class 'numpy.ndarray'>
(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 笔记:tslearn (数据部分)的主要内容,如果未能解决你的问题,请参考以下文章
Python 学习之《Learn Python3 The Hard Way 》第五部分学习笔记
Python 学习之《Learn Python3 The Hard Way 》第六部分学习笔记
如何使用 Python / Pyspark 在 Databricks 笔记本中合并数据帧