共计 3454 个字符,预计需要花费 9 分钟才能阅读完成。
工夫序列是数据点的序列,通常由在一段时间距离内进行的间断测量组成。工夫序列剖析是应用统计技术对工夫序列数据进行建模和剖析,以便从中提取有意义的信息并做出预测的过程。
工夫序列剖析是一个弱小的工具,能够用来从数据中提取有价值的信息,并对将来的事件做出预测。它能够用来辨认趋势、节令模式和变量之间的其余关系。工夫序列剖析还能够用来预测将来的事件,如销售、需要或价格变动。
如果你正在应用 Python 解决工夫序列数据,那么有许多不同的库能够抉择。所以在本文中,咱们将整顿 Python 中最风行解决工夫序列的库。
Sktime
Sktime 是一个用于解决工夫序列数据的 Python 库。它提供了一组解决工夫序列数据的工具,包含用于解决、可视化和剖析数据的工具。Sktime 的设计是易于应用和可扩大的,这样新的工夫序列算法就能够很容易地实现并且进行集成。
Sktime 正如其名,它反对 scikit-learn API,蕴含了无效解决波及工夫序列回归、预测和分类问题的所有必要办法和工具。该库蕴含专门的机器学习算法以及工夫序列的独特的转换方法,在其余库中并没有提供,所以 Sktime 能够作为一个十分好的根底库。
依据 sktime 的文档,“咱们的指标是使工夫序列剖析生态系统作为一个整体更具互操作性和可用性。Sktime 为不同但相干的工夫序列学习工作提供了对立的接口。它的特点是专门的工夫序列算法和工具,用于组合模型的构建,包含流水线管道、集成、调优和简化,使用户能够将一个工作的算法利用到另一个工作。
sktime 还提供与相干库的接口,例如 scikit-learn、statsmodels、tsfresh、PyOD 和 [fbprophet] 等等。”
上面是一个代码样例
from sktime.datasets import load_airline
from sktime.forecasting.model_selection import temporal_train_test_split
# from sktime.utils.plotting.forecasting import plot_ys
y = load_airline()
y_train, y_test = temporal_train_test_split(y)
plt.title('Airline Data with Train and Test')
y_train.plot(label = 'train')
y_test.plot(label = 'test')
plt.legend()
pmdarima
pmdarima 是一个用于工夫序列数据统计分析的 Python 库。它基于 ARIMA 模型并且提供了各种剖析、预测和可视化工夫序列数据的工具。Pmdarima 还提供了解决季节性数据的各种工具,包含季节性测试和季节性合成工具。
在工夫序列剖析中常常应用的预测模型之一是 ARIMA(自回归综合挪动均匀)。ARIMA 是一种预测算法,能够依据工夫序列的过来值中的信息来预测将来的值。
pmdarima 是 ARIMA 模型的包装器,它自带一个主动超参数搜寻函数,能够主动为 ARIMA 模型找到最佳超参数(p,d,q)。该库包含上面一些次要的性能点:
- 一组对于平稳性和季节性的统计测试
- 工夫序列效用,如差分和逆差分
- 泛滥的内生和外生转换器和特色化器,包含 Box-Cox 和傅立叶变换
- 节令工夫序列合成
- 穿插验证工具
- 内置一个丰盛的可用于原型和示例的工夫序列数据集汇合
AutoTS
顾名思义,它是一个用于主动工夫序列剖析的 Python 库。AutoTS 容许咱们用一行代码训练多个工夫序列模型,以便咱们能够抉择最适宜的模型。
该库是 autoML 的一部分,其指标是为初学者提供自动化库。
TSFresh
tsfresh 是一个能够主动从工夫序列中提取特色的 Python 包。它基于工夫序列中的信息能够合成为一组有意义的特色来实现的。tsfresh 负责手动提取这些特色的繁琐工作,并提供主动特征选择和分类的工具。它能够与 pandas DataFrames 一起应用,并提供宽泛的用于解决工夫序列数据的函数,包含:
- 从工夫序列中主动提取特色
- 主动特征选择
- 工夫序列合成
- 降维
- 异样值检测
- 反对多种工夫序列格局
- 反对缺失值
- 反对多种语言
Prophet
Prophet 是由 Facebook 外围数据迷信团队公布的开源软件。它基于一个相加模型,其中非线性趋势适宜每年、每周和每日的季节性,加上假日效应。它最适宜具备强烈季节性效应的工夫序列和几个节令的历史数据。Prophet 对于缺失的数据和趋势的变动具备很强的鲁棒性,通常可能很好地解决异样值。
依据官网文档,fbprophet 在解决具备显著季节性影响的工夫序列数据和几个节令价值的之前数据时工作得十分好。此外 fbprophet 可能抵制缺失数据,并可能无效地治理异样值。
Statsforecast
Statsforecast 提供了一组宽泛应用的单变量工夫序列预测模型,包含主动 ARIMA 和 ETS 建模并应用 numba 优化。它还包含大量的基准测试模型。依据官网的介绍:
- Python 和 R 中最快最精确的 AutoARIMA。
- Python 和 R 中最快最精确的 ETS。
- 兼容 sklearn 接口。
- ARIMA 的外生变量和预测区间的蕴含。
- 比 pmdarima 快 20 倍,比 Prophet 快 500 倍,比 NeuralProphet 快 100 倍,比 statmodels 快 4 倍。
- 通过 numba 编译为高性能机器代码。
- 开箱即用的实现 ADIDA, HistoricAverage, CrostonClassic, CrostonSBA, CrostonOptimized, seasonalwindowaaverage, SeasonalNaive, IMAPA Naive, RandomWalkWithDrift, windowaaverage, SeasonalExponentialSmoothing, TSB, AutoARIMA 和 ETS。
kats
Kats 是 Facebook 钻研团队最近开发的另一个专门解决工夫序列数据的库。该框架的指标是为解决工夫序列问题提供一个残缺的解决方案。应用此库,咱们能够执行以下操作:
- 工夫序列剖析
- 模式检测,包含季节性、异样值、趋势变动
- 产生 65 个特色的特色工程模块
- 对工夫序列数据建设预测模型,包含 Prophet、ARIMA、Holt Winters 等。
Darts
Darts 是由 Unit8.co 开发的用于预测工夫序列,并且对 scikit-learn 敌对 的 Python 包。它蕴含大量模型,从 ARIMA 到深度神经网络,用于解决与日期和工夫相干的数据。
该库的益处在于它还反对用于解决神经网络的多维类。
它还容许用户联合来自多个模型和内部回归模型的预测,从而更容易地对模型进行回测。
Pyflux
Pyflux 是一个为 Python 构建的开源工夫序列库。Pyflux 抉择了更多的概率办法来解决工夫序列问题。这种办法对于须要更残缺的不确定性的预测这样的工作特地无利。
用户能够建设一个概率模型,其中通过联结概率将数据和潜在变量视为随机变量。
PyCaret
PyCaret 是一个基于 Python 的开源、低代码的机器学习库,它是一个端到端机器学习和模型管理工具,能够成倍地放慢试验周期,让工作效率更高。
与其余开源机器学习库相比,PyCaret 是一个可代替的低代码库,能够只用几行代码替换数百行代码。这使得试验的速度和效率呈指数级增长。PyCaret 实质上是 scikit-learn、XGBoost、LightGBM、CatBoost、spacacy、Optuna、Hyperopt、Ray 等几个机器学习库和框架的 Python 包装。
尽管 PyCaret 不是一个专门的工夫序列预测库,但它有一个专门用于工夫序列预测的新模块。它依然处于预公布状态,然而装置时须要应用以下代码进行装置能力应用新的模块
pip install --pre pycaret
PyCaret 工夫序列模块与现有的 API 统一,并且能够应用残缺的性能,例如:统计测试、模型训练和抉择(30+ 算法模型)、模型剖析、主动超参数调优、试验日志、云部署等。所有这些都只用了几行代码就实现了。
总结
Python 中有许多可用的工夫序列预测库(比咱们在这里介绍的更多)。每个库都有本人的优缺点,因而依据本人的须要抉择适合的是很重要的。如果你有什么更好的举荐,请留言通知咱们。
https://avoid.overfit.cn/post/69997dd230e74359b36917c5388d656e