时间序列分析包括检查随着时间推移收集的数据点,目的是确定可以为未来预测提供信息的模式和趋势。我们已经介绍过很多个时间序列分析库了,但是随着时间推移,新的库和更新也在不断的出现,所以本文将分享8个目前比较常用的,用于处理时间序列问题的Python库。他们是tsfresh, autots, darts, atspy, kats, sktime, greykite。
(相关资料图)
1、Tsfresh
Tsfresh在时间序列特征提取和选择方面功能强大。它旨在自动从时间序列数据中提取大量特征,并识别出最相关的特征。Tsfresh支持多种时间序列格式,可用于分类、聚类和回归等各种应用程序。
import pandas as pdfrom tsfresh import extract_featuresfrom tsfresh.utilities.dataframe_functions import make_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 pointdf_shift, y = make_forecasting_frame(data["value"], kind="value", max_timeshift=10, rolling_direction=1)# Extract relevant features using tsfreshX = 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和异常值去除来处理数据。
from autots.datasets import load_monthlydf_long = load_monthly(long=True)from autots import AutoTSmodel = 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 modelprint(model)
3、darts
darts(Data Analytics and Real-Time Systems)有多种时间序列预测模型,包括ARIMA、Prophet、指数平滑的各种变体,以及各种深度学习模型,如LSTMs、gru和tcn。Darts还具有用于交叉验证、超参数调优和特征工程的内置方法。
darts的一个关键特征是能够进行概率预测。这意味着,不仅可以为每个时间步骤生成单点预测,还可以生成可能结果的分布,从而更全面地理解预测中的不确定性。
import pandas as pdimport matplotlib.pyplot as pltfrom darts import TimeSeriesfrom darts.models import ExponentialSmoothing# Read datadf = pd.read_csv("AirPassengers.csv", delimiter=",")# Create a TimeSeries, specifying the time and value columnsseries = TimeSeries.from_dataframe(df, "Month", "#Passengers")# Set aside the last 36 months as a validation seriestrain, val = series[:-36], series[-36:]# Fit an exponential smoothing model, and make a (probabilistic) # prediction over the validation series’ durationmodel = ExponentialSmoothing()model.fit(train)prediction = model.predict(len(val), num_samples=1000)# Plot the median, 5th and 95th percentilesseries.plot()prediction.plot(label="forecast", low_quantile=0.05, high_quantile=0.95)plt.legend()
4、AtsPy
atspy,可以简单地加载数据并指定要测试的模型,如下面的代码所示。
# Importing packagesimport pandas as pdfrom atspy import AutomatedModel# Reading datadf = 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.monthdf_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 katsimport pandas as pdfrom kats.consts import TimeSeriesDatafrom kats.models.prophet import ProphetModel, ProphetParams# Read datadf = pd.read_csv("AirPassengers.csv", names=["time", "passengers"])# Convert to TimeSeriesData objectair_passengers_ts = TimeSeriesData(air_passengers_df)# Create a model param instanceparams = ProphetParams(seasonality_mode="multiplicative")# Create a prophet model instancem = ProphetModel(air_passengers_ts, params)# Fit model simply by calling m.fit()m.fit()# Make prediction for next 30 monthforecast = m.predict(steps=30, freq="MS")forecast.head()
6、Sktime
sktime是一个用于时间序列分析的库,它构建在scikit-learn之上,并遵循类似的API,可以轻松地在两个库之间切换。下面是如何使用Sktime进行时间序列分类的示例:
from sktime.datasets import load_arrow_headfrom sktime.classification.compose import TimeSeriesForestClassifierfrom sktime.utils.sampling import train_test_split# Load ArrowHead datasetX, y = load_arrow_head(return_X_y=True)# Split data into train and test setsX_train, X_test, y_train, y_test = train_test_split(X, y)# Create and fit a time series forest classifierclassifier = TimeSeriesForestClassifier(n_estimators=100)classifier.fit(X_train, y_train)# Predict labels for the test sety_pred = classifier.predict(X_test)# Print classification reportfrom sklearn.metrics import classification_reportprint(classification_report(y_test, y_pred))
7、GreyKite
greykite是LinkedIn发布的一个时间序列预测库。该库可以处理复杂的时间序列数据,并提供一系列功能,包括自动化特征工程、探索性数据分析、预测管道和模型调优。
from greykite.common.data_loader import DataLoaderfrom greykite.framework.templates.autogen.forecast_config import ForecastConfigfrom greykite.framework.templates.autogen.forecast_config import MetadataParamfrom greykite.framework.templates.forecaster import Forecasterfrom greykite.framework.templates.model_templates import ModelTemplateEnum# Defines inputsdf = 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 configurationforecast_horizon=24, # Forecasts 24 steps aheadcoverage=0.95,# 95% prediction intervals )# Creates forecastsforecaster = Forecaster()result = forecaster.run_forecast_config(df=df, config=config)# Accesses resultsresult.forecast# Forecast with metrics, diagnosticsresult.backtest# Backtest with metrics, diagnosticsresult.grid_search # Time series CV resultresult.model# Trained modelresult.timeseries # Processed time series with plotting functions
总结
我们可以看到,这些时间序列的库主要功能有2个方向,一个是特征的生成,另外一个就是多种时间序列预测模型的集成,所以无论是处理单变量还是多变量数据,它们都可以满足我们的需求,但是具体用那个还要看具体的需求和使用的习惯。
作者:Joanna
关键词:
-
世界短讯!7个最新的时间序列分析库介绍和代码示例
时间序列分析包括检查随着时间推移收集的数据点,目的是确定可以为未来预测提供信息的模式和趋势。我们已经介绍过很多个时间序列分析库了,但
-
“优秀传统文化”走进福州大学城
活动现场东南网记者陈楠摄东南网4月8日讯(本网记者陈楠)为深入学习宣传贯彻党的二十大精神,弘扬福建优秀传统文化,4
-
当前速讯:当兴趣无法被装进“兴趣班”
本文共3000字,阅读约需5分钟来源:成长合作社在当今教育内卷的时代,很多家长抱着“不要让孩子成为一个对什么都没兴趣的人“这样的想法,为孩
-
1亿元公益资金服务老兵 解决退役军人“急难愁盼”
消息:退役军人事务部、中国老龄事业发展基金会等多家单位,4月7日在北京联合启动“情暖老兵·守护光明”公益行动,计划用5年时间投入1亿元公
-
2023职高高考和普高高考同时进行吗
随着四月的到来,我们就高考更近了一步,但由于现在各省市的高中主要分为职高和普高,所以很多人都存有2023职高高考和普高高考同时进行吗的疑
-
中铁新任总经理_中铁前任总裁是谁
1、中文名:白中仁国籍:中国民族:汉出生地:陕西合阳出生日期:1960年9月逝世日期:2014年1月4日职业:中国中铁股
-
当前观点:2023年4月8日二水氯化钙价格最新行情预测
据中国报告大厅对2023年4月8日二水氯化钙价格最新走势监测显示:2023年4月8日二水氯化钙均价1160 0元 吨,上
-
2023 “寻美·中国”主题活动启动 聊城市新阶层人士收看直播 天天快播报
看山东上鲁网
-
每日资讯:topusenn蓝牙键盘_topusenn
1、我们看电脑的好坏,都是看它的内存,或者说cpu和显卡。今天,边肖将为您带来一款新型显卡,外置显卡。外接显卡和我们平时
-
抢抓降雨有利时机 湖北已灌溉农田面积1360万亩 今日要闻
在湖北省老河口市袁冲乡孟桥川村的麦田里,40多个喷头正在均匀地喷洒着水肥。据统计,今年1—3月,老河口市降水量比去年同期减少一半以上
-
跨境资本流动稳定性增强-环球时讯
近日,国家外汇管理局发布报告显示,去年我国国际收支口径的直接投资净流入305亿美元,双向直接投资总体保持均衡。我国是吸引外资大国,也是对
-
线路合作合同范本(热门27篇)
线路合作合同范本第1篇根据《_律师法》和《合伙律师事务所管理办法》之规定,本着平等合作的原则,经协议人充分协商,决定共同创办合伙律师事
-
阳康后快10天了,怎么还是咳嗽?-今日播报
阳康后快1O天了,还在咳嗽,有几种可能,首先是免疫系统低下,可能肺部感染,如果一般咳嗽患者感冒出现咳嗽黄痰,引起的原因在于病毒、细菌等
-
以规范促发展 邮政业迎两项新国标
4月7日,市场监管总局新闻宣传司副司长耿欣在专题新闻发布会上介绍,为贯彻落实中央关于快递绿色包装标准化工作的重要决策部署、推动我国邮政
-
天天快资讯丨五年来中法贸易额从600亿升至800亿美元
五年来中法贸易额从600亿升至800亿美元,中欧,中法贸易,一带一路倡议
-
海贼王丨不依靠果实的几个另类的技能, 第四个专克能力者! 天天热资讯
拥有果实能力的人能够开发出许多这些技能,而那些非果实能力者也有不少诡异的技能招式!海流过肩摔是一种鱼人柔术,以类似柔道的过肩摔,将海
-
各地网友缅怀英烈,传承红色基因——纪念,是为了更好地出发|天天看点
4月3日,江西省吉安市思源实验学校学生在白鹭洲公园向革命英雄纪念碑献花。 李军摄(人民视觉)4月5日,人们来到江苏省南京市雨花台烈士陵
-
电动汽车电池的保险痛点
对于许多电动汽车来说,即使是在事故发生后轻微损坏的电池组也无法修复或评估,这迫使保险公司对行驶几英里的汽车进行报销——从
-
新集能源:因1煤组底板灰岩水害威胁较大,目前仅新集二矿通过采取超前综合治理手段
新集能源4月7日在互动平台表示,因1煤组底板灰岩水害威胁较大,目前公司仅新集二矿通过采取超前综合治理手段,能够进行1煤层
-
世界头条:盖茨反击,马斯克的建议解决不了问题
众所周知,马斯克对盖茨一直几乎是“嗤之以鼻”的,认为盖茨对于科技发展的一些变化,比如对AI发展的认识不多,理解不透等等。而且,还时不时