tslearn
Python中用于时间序列分析的机器学习工具包
章节 | 描述 |
---|---|
安装 | 安装依赖项和tslearn |
入门 | 如何使用tslearn的快速介绍 |
可用功能 | tslearn功能的全面概述 |
文档 | 我们的API参考和示例库的链接 |
贡献 | 愿意贡献的英雄指南 |
引用 | 学术文章中引用tslearn的方式 |
安装
安装tslearn有多种方式:
- PyPi:
python -m pip install tslearn
- Conda:
conda install -c conda-forge tslearn
- Git:
python -m pip install https://github.com/tslearn-team/tslearn/archive/main.zip
为了成功安装,必须安装所需的依赖项。有关如何安装tslearn的更详细指南,请参阅文档。
入门
1. 将数据转换为正确的格式
tslearn期望时间序列数据集以3D numpy
数组的格式呈现。三个维度分别对应时间序列的数量、每个时间序列的测量次数和维度数(n_ts, max_sz, d
)。为了将数据转换为正确的格式,有多种解决方案:
- 您可以使用诸如
to_time_series_dataset
之类的实用函数。 - 您可以从Python中其他流行的时间序列工具包进行转换。
- 您可以以所需格式加载任何UCR数据集。
- 您可以使用
generators
模块生成合成数据。
还应注意,tslearn 支持可变长度时间序列。
>>> from tslearn.utils import to_time_series_dataset
>>> my_first_time_series = [1, 3, 4, 2]
>>> my_second_time_series = [1, 2, 4, 2]
>>> my_third_time_series = [1, 2, 4, 2, 2]
>>> X = to_time_series_dataset([my_first_time_series,
my_second_time_series,
my_third_time_series])
>>> y = [0, 1, 1]
2. 数据预处理和转换
可选地,tslearn提供了几个用于预处理数据的实用工具。为了便于不同算法的收敛,您可以缩放时间序列。或者,为了加快训练时间,可以重采样数据或应用分段变换。
>>> from tslearn.preprocessing import TimeSeriesScalerMinMax
>>> X_scaled = TimeSeriesScalerMinMax().fit_transform(X)
>>> print(X_scaled)
[[[0.] [0.667] [1.] [0.333] [nan]]
[[0.] [0.333] [1.] [0.333] [nan]]
[[0.] [0.333] [1.] [0.333] [0.333]]]
3. 训练模型
将数据转换为正确格式后,就可以训练模型了。根据用例,tslearn支持不同的任务:分类、聚类和回归。要全面了解可能性,请查看我们的示例库。
>>> from tslearn.neighbors import KNeighborsTimeSeriesClassifier
>>> knn = KNeighborsTimeSeriesClassifier(n_neighbors=1)
>>> knn.fit(X_scaled, y)
>>> print(knn.predict(X_scaled))
[0 1 1]
可以看到,tslearn中的模型遵循与著名的scikit-learn相同的API。此外,它们与scikit-learn完全兼容,允许使用不同的scikit-learn实用工具,如超参数调整和管道。
4. 更多分析
tslearn还允许执行各种不同类型的分析。示例包括计算一组时间序列的重心或使用各种距离度量计算时间序列之间的距离。
可用功能
数据 | 处理 | 聚类 | 分类 | 回归 | 度量 |
---|---|---|---|---|---|
UCR数据集 | 缩放 | 时间序列K均值 | KNN分类器 | KNN回归器 | 动态时间规整 |
生成器 | 分段 | KShape | 时间序列SVC | 时间序列SVR | 全局对齐核 |
转换(1, 2) | 核K均值 | 学习形状子序列 | MLP | 重心 | |
早期分类 | 矩阵剖面 |
文档
文档托管在readthedocs。它包括API、示例库和用户指南。
贡献
如果您想为tslearn
做出贡献,请查看我们的贡献指南。有趣的待办事项列表可以在这里找到。如果您希望将其他时间序列的机器学习方法添加到此待办事项列表中,请随时提出问题!
引用tslearn
如果您在科学出版物中使用tslearn
,我们将感谢您的引用:
@article{JMLR:v21:20-091,
author = {Romain Tavenard and Johann Faouzi and Gilles Vandewiele and
Felix Divo and Guillaume Androz and Chester Holtz and
Marie Payne and Roman Yurchak and Marc Ru{\ss}wurm and
Kushal Kolar and Eli Woods},
title = {Tslearn, A Machine Learning Toolkit for Time Series Data},
journal = {Journal of Machine Learning Research},
year = {2020},
volume = {21},
number = {118},
pages = {1-6},
url = {http://jmlr.org/papers/v21/20-091.html}
}
致谢
作者要感谢Mathieu Blondel提供的核K均值和软DTW代码,以及Mehran Maghoumi提供的torch
兼容的SoftDTW实现。