7个最新的时间序列分析库介绍和代码示例

news2024/11/24 10:45:00

时间序列分析包括检查随着时间推移收集的数据点,目的是确定可以为未来预测提供信息的模式和趋势。我们已经介绍过很多个时间序列分析库了,但是随着时间推移,新的库和更新也在不断的出现,所以本文将分享8个目前比较常用的,用于处理时间序列问题的Python库。他们是tsfresh, autots, darts, atspy, kats, sktime, greykite。

1、Tsfresh

Tsfresh在时间序列特征提取和选择方面功能强大。它旨在自动从时间序列数据中提取大量特征,并识别出最相关的特征。Tsfresh支持多种时间序列格式,可用于分类、聚类和回归等各种应用程序。

 importpandasaspd
 fromtsfreshimportextract_features
 fromtsfresh.utilities.dataframe_functionsimportmake_forecasting_frame
 
 # Assume we have a time series dataset `data` with columns "time" and "value"
 data=pd.read_csv('data.csv')
 
 # We will use the last 10 points to predict the next point
 df_shift, y=make_forecasting_frame(data["value"], kind="value", max_timeshift=10, rolling_direction=1)
 
 # Extract relevant features using tsfresh
 X=extract_features(df_shift, column_id="id", column_sort="time", column_value="value", impute_function=impute)

2、AutoTS

autots是另一个用于时间序列预测的Python库:

  • 提供了单变量和多变量时间序列预测的各种算法,包括ARIMA, ETS, Prophet和DeepAR。
  • 为最佳模型执行自动模型集成。
  • 提供了上界和下界的置信区间预测。
  • 通过学习最优NaN imputation和异常值去除来处理数据。
 fromautots.datasetsimportload_monthly
 
 df_long=load_monthly(long=True)
 
 fromautotsimportAutoTS
 
 model=AutoTS(
     forecast_length=3,
     frequency='infer',
     ensemble='simple',
     max_generations=5,
     num_validations=2,
 )
 model=model.fit(df_long, date_col='datetime', value_col='value', id_col='series_id')
 
 # Print the description of the best model
 print(model)

3、darts

darts(Data Analytics and Real-Time Systems)有多种时间序列预测模型,包括ARIMA、Prophet、指数平滑的各种变体,以及各种深度学习模型,如LSTMs、gru和tcn。Darts还具有用于交叉验证、超参数调优和特征工程的内置方法。

darts的一个关键特征是能够进行概率预测。这意味着,不仅可以为每个时间步骤生成单点预测,还可以生成可能结果的分布,从而更全面地理解预测中的不确定性。

 importpandasaspd
 importmatplotlib.pyplotasplt
 
 fromdartsimportTimeSeries
 fromdarts.modelsimportExponentialSmoothing
 
 # Read data
 df=pd.read_csv("AirPassengers.csv", delimiter=",")
 
 # Create a TimeSeries, specifying the time and value columns
 series=TimeSeries.from_dataframe(df, "Month", "#Passengers")
 
 # Set aside the last 36 months as a validation series
 train, val=series[:-36], series[-36:]
 
 # Fit an exponential smoothing model, and make a (probabilistic) 
 # prediction over the validation series’ duration
 model=ExponentialSmoothing()
 model.fit(train)
 prediction=model.predict(len(val), num_samples=1000)
 
 # Plot the median, 5th and 95th percentiles
 series.plot()
 prediction.plot(label="forecast", low_quantile=0.05, high_quantile=0.95)
 plt.legend()

4、AtsPy

atspy,可以简单地加载数据并指定要测试的模型,如下面的代码所示。

 # Importing packages
 importpandasaspd
 fromatspyimportAutomatedModel
 
 # Reading data
 df=pd.read_csv("AirPassengers.csv", delimiter=",")
 
 # Preprocessing data 
 data.columns= ['month','Passengers']
 data['month'] =pd.to_datetime(data['month'],infer_datetime_format=True,format='%y%m')
 data.index=data.month
 df_air=data.drop(['month'], axis=1)
 
 # Select the models you want to run:
 models= ['ARIMA','Prophet']
 run_models=AutomatedModel(df=df_air, model_list=models, forecast_len=10)

该包提供了一组完全自动化的模型。包括:

5、kats

kats (kit to Analyze Time Series)是一个由Facebook(现在的Meta)开发的Python库。这个库的三个核心特性是:

模型预测:提供了一套完整的预测工具,包括10+个单独的预测模型、集成、元学习模型、回溯测试、超参数调优和经验预测区间。

检测:Kats支持检测时间序列数据中的各种模式的函数,包括季节性、异常、变化点和缓慢的趋势变化。

特征提取和嵌入:Kats中的时间序列特征(TSFeature)提取模块可以生成65个具有明确统计定义的特征,可应用于大多数机器学习(ML)模型,如分类和回归。

 # pip install kats
 
 importpandasaspd
 fromkats.constsimportTimeSeriesData
 fromkats.models.prophetimportProphetModel, ProphetParams
 
 # Read data
 df=pd.read_csv("AirPassengers.csv", names=["time", "passengers"])
 
 # Convert to TimeSeriesData object
 air_passengers_ts=TimeSeriesData(air_passengers_df)
 
 # Create a model param instance
 params=ProphetParams(seasonality_mode='multiplicative')
 
 # Create a prophet model instance
 m=ProphetModel(air_passengers_ts, params)
 
 # Fit model simply by calling m.fit()
 m.fit()
 
 # Make prediction for next 30 month
 forecast=m.predict(steps=30, freq="MS")
 forecast.head()

6、Sktime

sktime是一个用于时间序列分析的库,它构建在scikit-learn之上,并遵循类似的API,可以轻松地在两个库之间切换。下面是如何使用Sktime进行时间序列分类的示例:

 fromsktime.datasetsimportload_arrow_head
 fromsktime.classification.composeimportTimeSeriesForestClassifier
 fromsktime.utils.samplingimporttrain_test_split
 
 # Load ArrowHead dataset
 X, y=load_arrow_head(return_X_y=True)
 
 # Split data into train and test sets
 X_train, X_test, y_train, y_test=train_test_split(X, y)
 
 # Create and fit a time series forest classifier
 classifier=TimeSeriesForestClassifier(n_estimators=100)
 classifier.fit(X_train, y_train)
 
 # Predict labels for the test set
 y_pred=classifier.predict(X_test)
 
 # Print classification report
 fromsklearn.metricsimportclassification_report
 print(classification_report(y_test, y_pred))

7、GreyKite

greykite是LinkedIn发布的一个时间序列预测库。该库可以处理复杂的时间序列数据,并提供一系列功能,包括自动化特征工程、探索性数据分析、预测管道和模型调优。

 fromgreykite.common.data_loaderimportDataLoader
 fromgreykite.framework.templates.autogen.forecast_configimportForecastConfig
 fromgreykite.framework.templates.autogen.forecast_configimportMetadataParam
 fromgreykite.framework.templates.forecasterimportForecaster
 fromgreykite.framework.templates.model_templatesimportModelTemplateEnum
 
 # Defines inputs
 df=DataLoader().load_bikesharing().tail(24*90)  # Input time series (pandas.DataFrame)
 config=ForecastConfig(
      metadata_param=MetadataParam(time_col="ts", value_col="count"),  # Column names in `df`
      model_template=ModelTemplateEnum.AUTO.name,  # AUTO model configuration
      forecast_horizon=24,   # Forecasts 24 steps ahead
      coverage=0.95,         # 95% prediction intervals
  )
 
 # Creates forecasts
 forecaster=Forecaster()
 result=forecaster.run_forecast_config(df=df, config=config)
 
 # Accesses results
 result.forecast     # Forecast with metrics, diagnostics
 result.backtest     # Backtest with metrics, diagnostics
 result.grid_search  # Time series CV result
 result.model        # Trained model
 result.timeseries   # Processed time series with plotting functions

总结

我们可以看到,这些时间序列的库主要功能有2个方向,一个是特征的生成,另外一个就是多种时间序列预测模型的集成,所以无论是处理单变量还是多变量数据,它们都可以满足我们的需求,但是具体用那个还要看具体的需求和使用的习惯。

https://avoid.overfit.cn/post/45451d119a154aeba72bf8dd3eaa9496

作者:Joanna

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424651.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud学习(六)——Feign的简单使用

文章目录1. Feign 的使用1.1 引入依赖1.2 添加注解1.3 编写Feign客户端1.4 测试2. Feign中的自定义配置2.1.配置文件方式2.2.Java代码方式3. Feign 性能优化4. Feign的抽取式使用4.1 抽取配置4.2 引入依赖4.3 指明Client在此之前,我们服务之间需要进行调用的时候使用…

Spring Cloud Alibaba全家桶(十)——微服务网关Gateway组件

前言 本文小新为大家带来 微服务网关Gateway组件 相关知识,具体内容包括微服务网关Gateway组件(包括:Gateway核心概念,Gateway工作原理),Spring Cloud Gateway环境搭建,路由断言工厂&#xff08…

颜值即正义,献礼就业季,打造多颜色多字体双飞翼布局技术简历模版(Resume)

一年好景君须记,最是橙黄橘绿时。金三银四,秣马厉兵,没有一个好看的简历模板怎么行?无论是网上随便下载还是花钱买,都是一律千篇的老式模版,平平无奇,味同嚼蜡,没错,蜡都…

一文理解Transformer整套流程

【备注】部分图片引至他人博客,详情关注参考链接 【PS】query 、 key & value 的概念其实来源于推荐系统。基本原理是:给定一个 query,计算query 与 key 的相关性,然后根据query 与 key 的相关性去找到最合适的 value。举个例…

mysql语法大全

首先来一个全局总览,后面我会分别对每个命令进行说明: 如果你的mysql导入环境变量,可以在命令行输入: mysql -u root -p然后输入密码登录数据库 否则,打开mysql command line并输入密码进入数据库 一,基础…

HTTP HTTPS简介

一篇文章带你走进HTTP HTTPS场景复现核心干货HTTP/HTTPS简介(简单比较)HTTP工作原理HTTPS作用场景复现 最近在对前端的深入学习过程中,接触到了与网络请求相关的内容,于是打算出一个专栏,从HTTP与HTTPS入手&#xff0…

针对航空安全风险分析和飞行技术评估问题的题解

文章目录针对航空安全风险分析和飞行技术评估问题的题解思路文章最下方针对航空安全风险分析和飞行技术评估问题的题解 最新进度在文章最下方卡片,加入获取思路数据代码论文:2023十三届MathorCup交流 (第一时间在CSDN分享,文章底部) 思路 问…

VFP读写t5557卡示例源码

T5557卡是美国Atmel公司生产的多功能非接触式射频卡芯片,属于125KHz的低频卡,在国内有广大的应用市场。该芯片共有330bit(比特)的EPROM(分布为10个区块, 每个区块33bit)。0页的块0是被保留用于设置T5557操作模式的参数配置块。第0页第7块可以作用户数据块…

Excel表格怎么换行?4个方法任你选!

案例:excel表格怎么换行 【作为一名excel新手,我真的要被各种功能整懵了!今天又遇到了一个难题!excel表格怎么换行呀?各位大神帮帮我!】 在excel表格中进行换行操作是一种常见的需求,可以使单…

三分天下、格局初定,AR产业千亿市场谁执牛耳?

文|智能相对论 作者| 青月 【这是聚焦智能车与家的“智能相对论”关于创新硬件赛道的第27篇行业分析。】 早在十一年前,谷歌就推出了第一款AR眼镜Google Glass。 可由于当时1500美元的高昂价格,以及并不令人惊艳的体验,这款产品并未俘获消…

Flink1.14 Standalone独立集群模式安装

一、下载 在Flink 官网下载Flink 1.14,完整的安装包名是:flink-1.14.4-bin-scala_2.11.tgz。 二、master 配置 解压安装包,编辑conf/flink-conf.yaml文件: vim conf/flink-conf.yaml jobmanager.rpc.address: 172.21.0.XX tas…

N9010B频谱分析仪

N9010B N9010B EXA 信号分析仪,多点触控,10 Hz 至 44 GHz EXA X系列信号分析仪,多点触摸N9010B 本配置指南将帮助您确定哪些性能选项、测量应用程序、附件和服务将包含在新的多点触摸EXA中,或作为现有EXA的升级添加。主要特性和…

SSM实战-外卖项目-06-用户地址簿功能、菜品展示、购物车、下单

文章目录外卖项目-第六天课程内容1. 用户地址簿功能1.1 需求分析1.2 数据模型1.3 导入功能代码1.4 功能测试 (其实需求分析里我就自己写了一份代码,而且测试过了,下面再测试了一遍)2. 菜品展示2.1 需求分析2.2 前端页面分析2.3 代…

公开下载 | 300+页《服务端开发与面试知识手册》,12.8w字经典架构知识

淘苏(花名)目前是大淘宝技术的一名开发工程师。从国企跳槽来到互联网,【职业规划】是他被问得最多,也思考得最多的问题。回忆国企的三到五年时间,他完成了最初始的技术和经验的积累。接下来的职业生涯规划里&#xff0…

Linux_红帽8学习笔记分享_3

Linux_红帽8学习笔记分享_3 文章目录Linux_红帽8学习笔记分享_31.Vi编辑器1.1两种模式1.2十种技巧2.用户的家目录2.1 su命令的使用2.2 id命令的使用3. 重定向技术3.1查看文件内容的命令3.1.1 cat命令的使用3.1.2 more命令的使用3.2重定向概念3.2输出重定向符3.3标准追加重定向符…

小鹏开启架构造车,冲击年销300万台入场券

作者 | 张祥威 编辑 | 德新2023上海车展开始前,小鹏汽车发布了新一代技术架构SPEA 2.0扶摇。 扶摇是一次重要转向。基于这一新架构,小鹏的整车综合研发成本可以降低50%,接下来将有10多款新车密集投放。 大众进入电动化时代后&#xff0c…

插件化之APK动态加载

插件化相关概念: 根据组件化与插件化的区别来了解一下概念 组件化和插件化的区别 组件化:是将一个APP分成多个模块,每个模块都是一个组件(module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件,但是最终发布的…

故障注入测试的作用和应用你了解多少?

故障注入是一种测试技术,用于模拟系统或应用程序中的故障。故障注入测试通常被用来评估系统或应用程序的可靠性和鲁棒性,以便确定系统或应用程序是否能够在各种异常情况下正常运行,那故障注入测试的作用和应用你了解多少? 故障注入…

苹果智能眼镜新技术曝光,智能穿戴与苹果Find My技术相结合

知名分析师郭明錤发文表示,苹果正在开发“超透镜”(metalens)技术,预计将于2024年实现量产,用于取代iPad的Face ID Tx的塑胶镜头,并将大量应用于Apple Glasses上。据悉,Apple Glasses(非AR/MR头显)预计最快在2026或202…

国网B接口语音对讲和广播技术探究及与GB28181差别

接口描述 在谈国网B接口的语音广播和语音对讲的时候,大家会觉得,国网B接口是不是和GB28181大同小异?实际上确实信令有差别,但是因为要GB28181设备接入测的对接,再次做国网B接口就简单多了。 语音对讲和广播包括信令接…