tsmoothie: 高效的时间序列平滑和异常检测Python库

Ray

tsmoothie简介

tsmoothie是一个强大的Python库,专门用于时间序列数据的平滑处理和异常检测。它采用向量化的方式,能够高效地处理单个或多个时间序列数据。这个库由Marco Cerliani开发,旨在为数据科学家和分析师提供一套全面的工具,以简化时间序列分析的过程。

主要特性

多样化的平滑技术

tsmoothie提供了丰富的平滑技术选择:

  • 指数平滑
  • 卷积平滑(支持多种窗口类型)
  • 基于傅里叶变换的谱平滑
  • 多项式平滑
  • 样条平滑(线性、三次、自然三次)
  • 高斯平滑
  • 分箱平滑
  • LOWESS平滑
  • 季节性分解平滑
  • 可自定义组件的卡尔曼平滑

这些技术使用户能够根据具体的数据特征和分析需求选择最合适的平滑方法。

间隔计算功能

tsmoothie不仅提供平滑处理,还能计算平滑结果的置信区间:

  • sigma区间
  • 置信区间
  • 预测区间
  • 卡尔曼区间

这些区间计算对于识别时间序列中的异常值和异常模式非常有用。

滑动平滑和在线处理

tsmoothie支持滑动平滑方法,可以模拟在线处理场景。它通过将时间序列分割成等大小的片段并独立平滑来实现。这个功能通过WindowWrapper类以向量化的方式实现,保证了处理效率。

时间序列自助法

tsmoothie提供了BootstrappingWrapper类来执行时间序列自助法。支持的自助算法包括:

  • 非重叠块自助法
  • 移动块自助法
  • 循环块自助法
  • 平稳自助法

这些自助法算法可以用于评估模型的不确定性和生成预测区间。

安装和依赖

安装tsmoothie非常简单,只需要通过pip执行以下命令:

pip install --upgrade tsmoothie

tsmoothie的依赖项非常精简,只需要NumPy、SciPy和simdkalman。该库支持Python 3.6及以上版本。

使用示例

下面通过两个简单的例子来展示tsmoothie的基本用法:

随机游走平滑

import numpy as np
import matplotlib.pyplot as plt
from tsmoothie.utils_func import sim_randomwalk
from tsmoothie.smoother import LowessSmoother

# 生成3个长度为200的随机游走序列
np.random.seed(123)
data = sim_randomwalk(n_series=3, timesteps=200, 
                      process_noise=10, measure_noise=30)

# 执行平滑
smoother = LowessSmoother(smooth_fraction=0.1, iterations=1)
smoother.smooth(data)

# 生成区间
low, up = smoother.get_intervals('prediction_interval')

# 绘制平滑后的时间序列及区间
plt.figure(figsize=(18,5))

for i in range(3):
    plt.subplot(1,3,i+1)
    plt.plot(smoother.smooth_data[i], linewidth=3, color='blue')
    plt.plot(smoother.data[i], '.k')
    plt.title(f"timeseries {i+1}")
    plt.xlabel('time')
    plt.fill_between(range(len(smoother.data[i])), low[i], up[i], alpha=0.3)

随机游走平滑

周期性数据平滑

import numpy as np
import matplotlib.pyplot as plt
from tsmoothie.utils_func import sim_seasonal_data
from tsmoothie.smoother import DecomposeSmoother

# 生成3个长度为300的周期性时间序列
np.random.seed(123)
data = sim_seasonal_data(n_series=3, timesteps=300, 
                         freq=24, measure_noise=30)

# 执行平滑
smoother = DecomposeSmoother(smooth_type='lowess', periods=24,
                             smooth_fraction=0.3)
smoother.smooth(data)

# 生成区间
low, up = smoother.get_intervals('sigma_interval')

# 绘制平滑后的时间序列及区间
plt.figure(figsize=(18,5))

for i in range(3):
    plt.subplot(1,3,i+1)
    plt.plot(smoother.smooth_data[i], linewidth=3, color='blue')
    plt.plot(smoother.data[i], '.k')
    plt.title(f"timeseries {i+1}")
    plt.xlabel('time')
    plt.fill_between(range(len(smoother.data[i])), low[i], up[i], alpha=0.3)

周期性数据平滑

与scikit-learn的集成

tsmoothie中的所有平滑器都可以与scikit-learn完全集成。这意味着您可以将tsmoothie的平滑器作为scikit-learn管道的一部分,或在网格搜索中使用它们来优化超参数。这种集成极大地增强了tsmoothie在机器学习工作流程中的实用性。

应用场景

tsmoothie在多个领域都有广泛的应用:

  1. 金融分析:平滑股票价格数据,检测市场异常。
  2. 传感器数据处理:去除传感器读数中的噪声,识别设备故障。
  3. 天气预报:平滑气象数据,预测极端天气事件。
  4. 能源需求预测:分析和预测电力消耗模式。
  5. 网络流量分析:检测网络流量异常,预防安全威胁。
  6. 医疗保健:分析生理信号数据,检测健康状况异常。

总结

tsmoothie为时间序列分析提供了一个强大而灵活的工具集。它的向量化实现确保了高效的处理,即使面对大量或长期的时间序列数据也能保持良好的性能。丰富的平滑技术和间隔计算方法使其适用于各种场景,从简单的数据清洗到复杂的异常检测任务。

对于数据科学家和分析师来说,tsmoothie是一个值得关注的库。它不仅可以简化时间序列预处理的工作流程,还能提供深入的洞察,帮助发现数据中隐藏的模式和异常。随着时间序列数据在各个领域的重要性不断增加,tsmoothie这样的专业工具将在数据分析和机器学习项目中发挥越来越重要的作用。

🔗 GitHub项目链接

📚 参考资料:

无论您是时间序列分析的新手还是专家,tsmoothie都能为您的项目带来价值。我们期待看到更多基于tsmoothie的创新应用和研究成果。

avatar
0
0
0
相关项目
Project Cover

darts

Darts是一个用户友好且灵活的Python库,专注于时间序列的预测与异常检测。它提供了一系列从ARIMA到深度神经网络的多样化模型,通过统一的fit()和predict()接口简化操作,类似于scikit-learn。此外,Darts支持包括多变量和外部数据在内的复杂时间序列处理,并为大规模数据集提供高效解决方案。它还拥有全面的异常检测功能,允许进行深入的异常分析和评分。

Project Cover

Time-Series-Library

TSLib为深度学习研究者提供了一个专业开源时间序列分析库,涵盖广泛的应用领域,如长短期预测、数据填充、异常检测和分类。本库提供清晰的代码基础,支持时间序列模型的评估与开发,包括最新的模型评估和深度时间序列研究成果。该工具适合科研和开发人员使用,以推动时间序列分析的未来研究与实践。

Project Cover

neuralforecast

NeuralForecast 提供 30 多种先进的神经网络模型,提升时间序列预测的准确性和效率。支持外生变量和静态协变量,并具备自动超参数优化和可解释性方法。通过 sklearn 语法 `.fit` 和 `.predict` 实现快速训练和预测,包含 NBEATSx 和 NHITS 等最新实现,并与 Ray 和 Optuna 集成,适用于多种应用场景。

Project Cover

time-series-transformers-review

本项目专业整理了Transformers在时序数据建模中的资源,涵盖论文、代码和数据,全面总结其最新进展。内容持续更新,开放问题提交和拉取请求,覆盖时序预测、不规则时序建模、异常检测和分类等领域,适合学术研究及实际应用。

Project Cover

UniRepLKNet

UniRepLKNet项目提出了一个适用于图像、音频、视频、点云和时间序列的大核卷积网络统一架构。通过提供四个设计大核卷积网络的架构指南,显著提升了多模态数据的识别性能。特别是在全球温度和风速预测等挑战性的时间序列预测任务中,UniRepLKNet表现优异,超过了现有系统。这一项目不仅重振了卷积神经网络在传统领域的表现,还展示了其在新兴领域的广泛应用潜力。

Project Cover

Time-series-prediction

TFTS(TensorFlow Time Series)是一个易用的时间序列预测工具包,支持TensorFlow和Keras中的经典及前沿深度学习方法。适用于预测、分类及异常检测任务。提供适应工业、研究和竞赛所需的深度学习模型,配有详尽文档和教程,帮助用户快速入门。

Project Cover

machine-learning

本项目持续更新,介绍了数据科学和机器学习各个主题。内容涵盖深度学习、模型部署、运筹学和强化学习等,提供Jupyter Notebook格式教程,结合Python科学栈(如numpy、pandas)和开源库(如scikit-learn、TensorFlow、PyTorch)进行教学示范,平衡数学符号与实际应用。

Project Cover

Anomaly-Transformer

Anomaly-Transformer是一种时间序列异常检测模型,利用关联差异作为可区分标准,并结合Anomaly-Attention机制和极小极大策略提高检测效果。该模型在多个基准数据集上展现出优秀性能,为无监督时间序列异常检测领域提供了新的解决方案。

Project Cover

chronos-forecasting

Chronos是一款基于语言模型架构的预训练时间序列预测工具。它通过量化处理将时间序列转换为标记序列,并使用大规模的公开和合成数据进行训练。Chronos模型在零样本场景中表现优异,提供从预测到嵌入提取的完整解决方案。通过AutoGluon,用户可轻松进行模型集成和云端部署,提升预测性能和应用的灵活性。

最新项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号