MINIROCKET:一种非常快速(几乎)确定性的时序分类变换方法
minirocket 项目地址: https://gitcode.com/gh_mirrors/mi/minirocket
1. 项目介绍
MINIROCKET是Angus Dempster等人在2021年的KDD会议上提出的一种改进版的ROCKET算法。它旨在加速时间序列分类,同时保持高准确性。通过随机卷积核进行变换,并利用转换后的特征训练线性分类器,MINIROCKET不仅将计算复杂度降低到极致,在大规模数据集上比ROCKET快多达75倍,而且几乎达到确定性,可选地通过增加少量计算负担实现完全确定性。这个项目在GitHub上的地址为:https://github.com/angus924/minirocket,其开源许可证为GPL-3.0。
2. 快速启动
要快速开始使用MINIROCKET,首先确保你的环境已安装Python、NumPy、pandas、Numba以及scikit-learn。以下是一个基本的使用示例:
```python
# 导入必要的库
from minirocket import fit, transform
from sklearn.linear_model import RidgeClassifierCV
# 假设X_training和Y_training为训练数据及其标签
parameters = fit(X_training) # 适应数据以获取参数
X_training_transformed = transform(X_training, parameters) # 转换训练数据
# 使用RidgeClassifierCV作为分类器
classifier = RidgeClassifierCV(alphas=np.logspace(-3, 3, 10), normalize=True)
classifier.fit(X_training_transformed, Y_training) # 训练分类器
# 对测试数据进行相同转换并预测
X_test_transformed = transform(X_test, parameters) # 假定X_test为测试数据
predictions = classifier.predict(X_test_transformed)
3. 应用案例和最佳实践
MINIROCKET适用于各种时序分类任务,尤其对于那些要求高效处理大型数据集的场景。例如,在健康监控、金融分析、语音识别等领域,可以将原始时序信号通过MINIROCKET快速预处理后,输入到机器学习模型中。最佳实践包括始终使用np.float32
类型的数据以匹配算法优化,且无需对时序数据进行预标准化,除非特定应用需要。
4. 典型生态项目
-
GPU实现:Malcolm McLean和Ignacio Oguiza合作开发了基于tsai的MINIROCKET GPU版本,适合加速处理。
-
sktime集成:MINIROCKET也已经被整合进
sktime
库,支持多变量时序分析,提供了灵活性更高的接口,尤其是处理大规模数据集时建议与SGD等方法结合使用。 -
变长输入实验:项目还包含一个实验特性,允许处理长度不一的时序输入,提升了算法的通用性和实用性。
MINIROCKET因其速度与精度的平衡而成为处理时序数据时的优选工具之一,特别推荐给追求效率和准确性的开发者和研究员。通过上述步骤和实践,你可以迅速在其基础上搭建高效的时序分析解决方案。
minirocket 项目地址: https://gitcode.com/gh_mirrors/mi/minirocket
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考