Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh

这篇具有很好参考价值的文章主要介绍了Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

时间序列分析在金融和医疗保健等领域至关重要,在这些领域,理解随时间变化的数据模式至关重要。在本文中,我们将介绍四个主要的Python库——statmodels、tslearn、tssearch和tsfresh——每个库都针对时间序列分析的不同方面进行了定制。这些库为从预测到模式识别的任务提供了强大的工具,使它们成为各种应用程序的宝贵资源。

我们使用来自Kaggle的数据集,通过加速度计数为各种身体活动进行分析。这些活动被分为12个不同的类别,每个类别对应一个特定的身体动作,如站立、坐着、行走,或从事更有活力的活动,如慢跑和骑自行车。每个活动都记录了一分钟的持续时间,提供了丰富的时间序列数据源。

用于此分析的库有:

 # statsmodels
 from statsmodels.tsa.seasonal import seasonal_decompose
 from statsmodels.tsa.stattools import adfuller
 from statsmodels.graphics.tsaplots import plot_acf
 
 #tslearn
 from tslearn.barycenters import dtw_barycenter_averaging
 
 # tssearch
 from tssearch import get_distance_dict, time_series_segmentation, time_series_search, plot_search_distance_result
 
 # tsfresh
 from tsfresh import extract_features
 from tsfresh.feature_selection.relevance import calculate_relevance_table
 from tsfresh.feature_extraction import EfficientFCParameters
 from tsfresh.utilities.dataframe_functions import impute

Statsmodels

从statmodels库中,两个基本函数在理解从x, y和z方向收集的加速度数据的特征方面起着关键作用。

adfuller函数是确定时间序列信号平稳性的有力工具。通过对我们的数据进行Augmented Dickey-Fuller检验,可以确定加速度信号是否表现出平稳的行为,这是许多时间序列分析技术的基本要求。这个测试帮助我们评估数据是否随时间而变化。

 def activity_stationary_test(dataframe, sensor, activity):
   dataframe.reset_index(drop=True)
   adft = adfuller(dataframe[(dataframe['Activity'] == activity)][sensor], autolag='AIC')
   output_df = pd.DataFrame({'Values':[adft[0], adft[1], adft[4]['1%']], 'Metric':['Test Statistics', 'p-value', 'critical value (1%)']})
   print('Statistics of {} sensor:\n'.format(sensor), output_df)
   print()
   if (adft[1] < 0.05) & (adft[0] < adft[4]['1%']):
     print('The signal is stationary')
   else:
     print('The signal is non-stationary')

seasonal_decomposition函数提供了对时间序列数据结构的宝贵见解。它将时间序列分解为三个不同的组成部分:趋势、季节性和残差。这种分解使我们能够可视化和理解加速度数据中的潜在模式和异常。

 def activity_decomposition(dataframe, sensor, activity):
   
   dataframe.reset_index(drop=True)
   data = dataframe[(dataframe['Activity'] == activity)][sensor]
   decompose = seasonal_decompose(data, model='additive', extrapolate_trend='freq', period=50)
   fig = decompose.plot()
   fig.set_size_inches((12, 7))
   fig.axes[0].set_title('Seasonal Decomposition Plot')
   fig.axes[3].set_xlabel('Indices')
   plt.show()

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh,人工智能,机器学习,时间序列预测,python

Tslearn

如果使用tslearn库进行时间序列分析。可以采用分割方法,将连续的加速信号分解成特定长度的离散段或窗口(例如,150个数据点)。这些片段提供了行走过程中运动的颗粒视图,并成为进一步分析的基础。重要的是,我们在相邻部分之间使用了50个数据点的重叠,从而可以更全面地覆盖潜在的动态。

 template_length = 150
 overlap = 50  # Adjust the overlap value as needed
 segments = [signal[i:i + template_length] for i in range(0, len(signal) - template_length + 1, overlap)]

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh,人工智能,机器学习,时间序列预测,python

为了从这些片段中获得一个封装行走典型特征的代表性模板,我们使用了dtw_barycenter_averaging函数。该方法采用动态时间规整(Dynamic Time Warping, DTW)对分割的时间序列进行对齐和平均,有效地创建了一个捕捉步行运动中心趋势的模板。

 template_signal = dtw_barycenter_averaging(segments)
 template_signal = template_signal.flatten()

生成的模板为后续的分类和比较任务提供了有价值的参考,有助于基于x轴加速度的步行活动识别和分析。

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh,人工智能,机器学习,时间序列预测,python

Tssearch

对于tssearch库使用time_series_segmentation函数,通过动态时间规整(DTW)或其他相似性度量来识别输入时间序列中与所提供的模板信号最相似的片段。

该函数的主要目标是定位和提取与模板信号密切匹配的输入时间序列片段。通过将模板信号与输入时间序列进行比较,可以找到这些片段,该函数返回输入时间序列中这些片段开始的位置或索引。

 segment_distance = get_distance_dict(["Dynamic Time Warping"])
 
 segment_results = time_series_segmentation(segment_distance, template_signal, signal_np)
 
 for k in segment_results:
   plt.figure(figsize=(15, 3))
   plt.plot(signal_np, color='gray')
   plt.vlines(segment_results[k], np.min(signal_np)-1, np.max(signal_np) + 1, 'C1')
   plt.xlabel('Indices')
   plt.ylabel('Amplitude')
   plt.title(k)

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh,人工智能,机器学习,时间序列预测,python

tssearch库中还有另一个用于发现时间序列数据中的相似性和差异性的方法。首先,我们配置了一个字典dict_distances来指定搜索的距离度量。定义了两种不同的方法。第一个,标记为“elastic”,采用动态时间规整(DTW)作为相似性度量。使用特定的参数定制DTW,例如dtw_type设置为“sub-dtw”,alpha设置为0.5,允许灵活的时间序列对齐和比较。然后是“lockstep”,它利用欧几里得距离以一种更严格的方式来衡量相似性。有了这些距离配置,就可以使用time_series_search函数执行时间序列搜索,将模板信号与目标信号(signal_np)进行比较,并指定前30个匹配项的输出。

 dict_distances = {
     "elastic": {
         "Dynamic Time Warping": {
             "function": "dtw",
             "parameters": {"dtw_type": "sub-dtw", "alpha": 0.5},
         }
     },
     "lockstep": {
         "Euclidean Distance": {
             "function": "euclidean_distance",
             "parameters": "",
       }
     }
 }
 
 result = time_series_search(dict_distances, template_signal, signal_np, output=("number", 30))
 plot_search_distance_result(result, signal_np)

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh,人工智能,机器学习,时间序列预测,python

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh,人工智能,机器学习,时间序列预测,python

这是一种时间序列聚类的简单的方法,并且可解释性很强。

Tsfresh

tsfresh库则是一个很好的自动化特征提取过程的工具。effentfcparameters()定义了一组提取设置,它指定了特征提取参数和配置。这些设置可以控制在提取过程中计算哪些特征。然后就可以使用extract_features函数应用进行特征的提取。这里应该将“Activity”列作为标识符列,并提供了特征提取参数。重要的是,该库可以对缺失值(NaN)的特征进行自动删除,结果保存在x_extract中,是从时间序列数据中提取的大量特征集合。Tsfresh简化了通常复杂且耗时的特征工程过程,为时间序列分析提供了宝贵的资源。

 extraction_settings = EfficientFCParameters()
 X_extracted = extract_features(final_df, column_id='Activity',
                       default_fc_parameters=extraction_settings,
                       # we impute = remove all NaN features automatically
                       impute_function=impute, show_warnings=False)
 
 X_extracted= pd.DataFrame(X_extracted, index=X_extracted.index, columns=X_extracted.columns)
 
 values = list(range(1, 13))
 y = pd.Series(values, index=range(1, 13))
 
 relevance_table_clf = calculate_relevance_table(X_extracted, y)
 relevance_table_clf.sort_values("p_value", inplace=True)
 relevance_table_clf.head(10)

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh,人工智能,机器学习,时间序列预测,python

 top_features = relevance_table_clf["feature"].head(10)
 x_features = X_extracted[top_features]

Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh,人工智能,机器学习,时间序列预测,python

总结

本文向您介绍了时间序列分析的四个基本Python库:statmodels、tslearn、tssearch和tsfresh。时间序列分析是金融和医疗保健等各个领域的重要工具,在这些领域,我们需要了解数据随时间的变化趋势,以便做出明智的决策和预测。

每个库都专注于时间序列分析的不同方面,选择哪个库取决于具体问题。通过结合使用这些库,可以处理各种与时间相关的挑战,从预测财务趋势到对医疗保健中的活动进行分类。当要开始自己的时间序列分析项目时,请记住这些库,结合着使用它们可以帮助你解决很多的实际问题。

https://avoid.overfit.cn/post/ce023e947e0246c09a10a3d71f0181c5

作者:daython3文章来源地址https://www.toymoban.com/news/detail-713765.html

到了这里,关于Python时间序列分析库介绍:statsmodels、tslearn、tssearch、tsfresh的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Python时间序列分析--ARIMA模型实战案例

    Python时间序列分析--ARIMA模型实战案例

    **本文将介绍使用Python来完成时间序列分析ARIMA模型的完整步骤与流程,绘制时序图,平稳性检验,单位根检验,白噪声检验,模型定阶,参数估计,模型检验等完整步骤。Python建立时间序列分析–ARIMA模型实战案例 时间序列指的是将带有同一指标单位的数值按照产生时间的先

    2024年01月17日
    浏览(14)
  • 用Python语言进行时间序列ARIMA模型分析

    用Python语言进行时间序列ARIMA模型分析

    应用时间序列 时间序列分析是一种重要的数据分析方法,应用广泛。以下列举了几个时间序列分析的应用场景: 1.经济预测:时间序列分析可以用来分析经济数据,预测未来经济趋势和走向。例如,利用历史股市数据和经济指标进行时间序列分析,可以预测未来股市的走向。

    2024年02月03日
    浏览(9)
  • Python探索金融数据进行时间序列分析和预测

    Python探索金融数据进行时间序列分析和预测

    大家好,时间序列分析是一种基于历史数据和趋势分析进行预测的统计技术。它在金融和经济领域非常普遍,因为它可以准确预测趋势并做出明智的决策。本文将使用Python来探索经济和金融数据,执行统计分析,并创建时间序列预测。 我们将在本教程中使用NumPy、Pandas和Mat

    2024年02月16日
    浏览(15)
  • ARIMA模型时间序列数据分析(附python代码)

    ARIMA模型时间序列数据分析(附python代码)

    ARIMA模型建模流程  1 )平稳性检验与差分处理 我们选取原始数据 bus 中的“ prf_get_person_count ”列,并截取前 32 个站点的数据进行平稳性检验,这里采用的是 ADF 检验确定数据的平稳性,导入 statsmodels 包下的 adfuller 函数,该函数返回 adf 值与概率 p 值。若原始序列不平稳,就

    2024年02月01日
    浏览(12)
  • Python数据分析案例11——灰色预测法预测时间序列数据

    Python数据分析案例11——灰色预测法预测时间序列数据

    本次案例来自2022华为杯第E题,第2小问。给定了2012.01-2022.03的土壤湿度的月度数据,需要预测2022.04-2023.12的土壤湿度的月度数据。典型的时间序列预测。 传统的时间序列预测肯定是ARIMA模型,可以参考我之前的文章。Python统计学10——时间序列分析自回归模型(ARIMA) 现在流行的

    2024年02月06日
    浏览(19)
  • Python实现时间序列分析马尔可夫切换动态回归模型(MarkovRegression算法)项目实战

    Python实现时间序列分析马尔可夫切换动态回归模型(MarkovRegression算法)项目实战

    说明:这是一个机器学习实战项目(附带 数据+代码+文档+视频讲解 ),如需 数据+代码+文档+视频讲解 可以直接到文章最后获取。  时间序列分析中的马尔可夫切换动态回归模型(Markov Switching Dynamic Regression Model,MSDRM或简称为MarkovRegression算法)是一种用于处理具有非平稳性

    2024年02月20日
    浏览(11)
  • Python数据分析案例42——基于Attention-BiGRU的时间序列数据预测

    Python数据分析案例42——基于Attention-BiGRU的时间序列数据预测

    承接上一篇的学术缝合,排列组合模型,本次继续缝合模型演示。 Python数据分析案例41——基于CNN-BiLSTM的沪深300收盘价预测-CSDN博客 虽然我自己基于各种循环神经网络做时间序列的预测已经做烂了.....但是还是会有很多刚读研究生或者是别的领域过来的小白来问这些神经网络

    2024年04月15日
    浏览(15)
  • 大数据毕业设计:智慧交通数据分析系统 python 时间序列预测算法 爬虫 出行速度预测 拥堵预测(源码)✅

    大数据毕业设计:智慧交通数据分析系统 python 时间序列预测算法 爬虫 出行速度预测 拥堵预测(源码)✅

    博主介绍:✌全网粉丝10W+,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌感兴趣的可以先收藏起来,点赞、关注不迷路✌ 毕业设计:2023-2024年计算机毕业设计1000套(建议收藏)

    2024年02月22日
    浏览(13)
  • 金融时间序列分析:Python基于garch模型预测上证指数波动率、计算var和var穿透率、双尾检验

    金融时间序列分析:Python基于garch模型预测上证指数波动率、计算var和var穿透率、双尾检验

    目录 一、收益率波动效应的分析 1.1  收益率序列平稳性检验 1.2 建立AR(p)模型 1.3 Ljung-Box混成检验残差序列的相关性,判断是否有ARCH效应 1.4 建立ARCH模型  二、GARCH模型与波动率预测 2.1 建立GARCH模型 2.2 波动率预测 三、正态分布的假设下通过波动率计算VaR  四、厚尾分布的假

    2024年02月04日
    浏览(14)
  • 【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...

    【视频】Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析|数据分享...

    在本文中,长短期记忆网络——通常称为“LSTM”——是一种特殊的RNN递归神经网络,能够学习长期依赖关系 ( 点击文末“阅读原文”获取完整 代码数据 ) 。 视频:LSTM 神经网络架构和工作原理及其在Python中的预测应用 什么是依赖关系? 假设您在观看视频时记得前一个场

    2024年02月11日
    浏览(15)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包