时间序列数据特征提取TsFresh

时间序列数据特征提取TsFresh文章目录 1 源码和数据地址 2 TsFresh 安装 3 代码部分说明 3 1 数据下载 3 2 从文件读取数据 4 特征拓展 4 1 默认参数 4 2Comprehensi 参数 4 3Ef

大家好,欢迎来到IT知识分享网。

tsfresh是一个Python的时序数据特征挖掘的模块(官网https://tsfresh.readthedocs.io/en/latest/index.html),提取的特征可以用来描述或聚类基于提取特征的时间序列。此外,它们还可以用于构建在时间序列上执行分类/回归任务的模型。

tsfresh能够提取出超过64种特征。本篇主要介绍时间序列时间的特征提取特征选择。编程环境jupyter notebook。

1. 源码和数据地址

2. TsFresh安装

pip install tsfresh 

3. 代码部分说明

3.1 数据下载

from tsfresh.examples.robot_execution_failures import download_robot_execution_failures, load_robot_execution_failures download_robot_execution_failures() timeseries, y = load_robot_execution_failures() 

数据展示:

timeseries.describe() 

在这里插入图片描述

y.head() 

在这里插入图片描述

3.2 从文件读取数据

import pandas as pd import numpy as np timeseries_csv = pd.read_csv('load_robot_execution_failures_timeseries.csv') timeseries_csv.describe() 

在这里插入图片描述

y_csv = pd.read_csv('load_robot_execution_failures_y.csv',usecols = ['index','value']) y_csv= pd.Series(np.array(y_csv['value']).tolist(),index =np.array(y_csv['index']).tolist()) y_csv.head() 

在这里插入图片描述

4. 提取特征

提取特征主要通过 extract_features 函数实现,包含有多种参数提取模式,以下给出常见的几种:

  • 默认参数
  • ComprehensiveFCParameters:全面特征提取,包括所有没有参数的特征和所有有参数的特征,每个特征都有不同的参数组合。 ;已经封装好,并且把以上特征的参数之类的写好,直接提取即可;
  • EfficientFCParameters:是 ComprehensiveFCParameters 的子类,用于计算那些时间复杂度低的特征;去除 high computational costs 的特征; 如果运行时性能起主要作用,则可以使用此功能。
  • MinimalFCParameters:是 ComprehensiveFCParameters 的子类,选择最小参数进行计算。仅包含少数功能,可用于快速测试。

虽然 tsfresh 能够为时序数据提取多种有效特征,其也有不适合使用的场景,如:

  • 用于流式数据(流式数据是指通常用于在线操作的数据,而时间序列数据通常用于离线操作)
  • 在提取的特征上训练模型
  • 用于高度不规则的时间序列

4.1 默认参数

from tsfresh.feature_extraction import extract_features extracted_features_0 = extract_features(timeseries, column_id="id", column_sort="time") extracted_features_0.shape 

在这里插入图片描述

4.2 ComprehensiveFCParameters参数

from tsfresh.feature_extraction import extract_features, ComprehensiveFCParameters # 使用ComprehensiveFCParameters参数 settings = ComprehensiveFCParameters() extracted_features_1 = extract_features(timeseries, column_id="id", column_sort="time",default_fc_parameters=settings) extracted_features_1.shape 

在这里插入图片描述

4.3 EfficientFCParameters参数

from tsfresh.feature_extraction import extract_features, EfficientFCParameters settings = EfficientFCParameters() extracted_features_2 = extract_features(timeseries, column_id="id", column_sort="time",default_fc_parameters=settings) extracted_features_2.shape 

在这里插入图片描述

4.4 MinimalFCParameters参数

from tsfresh.feature_extraction import extract_features, MinimalFCParameters settings = MinimalFCParameters() extracted_features_3 = extract_features(timeseries, column_id="id", column_sort="time",default_fc_parameters=settings) extracted_features_3.shape 

在这里插入图片描述

5. 特征选择

提取特征主要通过 select_features 函数实现,包含有多种参数提取模式,以下给出常见的几种:

  • 默认参数
  • ComprehensiveFCParameters参数
  • EfficientFCParameters参数
  • MinimalFCParameters参数

5.1 默认参数

from tsfresh import select_features from tsfresh.utilities.dataframe_functions import impute impute(extracted_features_0) features_filtered_0 = select_features(extracted_features_0, y) #特征选择 features_filtered_0.shape 

在这里插入图片描述

5.2 ComprehensiveFCParameters参数

from tsfresh import select_features from tsfresh.utilities.dataframe_functions import impute impute(extracted_features_1) features_filtered_1 = select_features(extracted_features_1, y) #特征选择 features_filtered_1.shape 

在这里插入图片描述

5.3 EfficientFCParameters参数

from tsfresh import select_features from tsfresh.utilities.dataframe_functions import impute impute(extracted_features_2) features_filtered_2 = select_features(extracted_features_2, y) #特征选择 features_filtered_2.shape 

在这里插入图片描述

5.4 MinimalFCParameters参数

from tsfresh import select_features from tsfresh.utilities.dataframe_functions import impute impute(extracted_features_3) features_filtered_3 = select_features(extracted_features_3, y) #特征选择 features_filtered_3.shape 

在这里插入图片描述

6. 特征提取和选择同时进行

提取特征主要通过 extract_relevant_features 函数实现,同样包含有多种参数提取模式。

6.1 默认参数

from tsfresh import extract_relevant_features features_filtered_direct_0 = extract_relevant_features(timeseries,y, column_id="id", column_sort="time") features_filtered_direct_0.shape 

在这里插入图片描述

6.2 ComprehensiveFCParameters参数

from tsfresh.feature_extraction import ComprehensiveFCParameters from tsfresh import extract_relevant_features settings = ComprehensiveFCParameters() features_filtered_direct_1 = extract_relevant_features(timeseries,y, column_id="id", column_sort="time",default_fc_parameters=settings) features_filtered_direct_1.shape 

在这里插入图片描述

6.3 EfficientFCParameters参数

from tsfresh.feature_extraction import EfficientFCParameters from tsfresh import extract_relevant_features settings = EfficientFCParameters() features_filtered_direct_2 = extract_relevant_features(timeseries,y, column_id="id", column_sort="time",default_fc_parameters=settings) features_filtered_direct_2.shape 

在这里插入图片描述

6.4 MinimalFCParameters参数

from tsfresh.feature_extraction import MinimalFCParameters from tsfresh import extract_relevant_features settings = MinimalFCParameters() features_filtered_direct_3 = extract_relevant_features(timeseries,y, column_id="id", column_sort="time",default_fc_parameters=settings) features_filtered_direct_3.shape 

在这里插入图片描述

7. 常用的特征提取函数详解

这里主要参考博客:

  • 时间序列挖掘分析:tsfresh特征中文(一)
  • 时间序列挖掘分析:tsfresh特征中文(二)
  • Github项目:tsfresh特征提取工具可提取的特征
  • python tsfresh特征中文详解(更新中)

tsfresh 中包含有许多提取特征的函数,首先我们导入相应的数据包,如下所示:

from tsfresh.feature_extraction.feature_calculators import * 

7.1 abs_energy(x)

【实现功能】:求取时间序列的平方和
在这里插入图片描述

【参数介绍】:

  • x(pandas.Series) 需要计算特征的时间序列
  • 返回值:特征值
  • 返回值类型:float
  • 函数类型:简单

【函数定义】:

def abs_energy(x): """ Returns the absolute energy of the time series which is the sum over the squared values .. math:: E = \\sum_{ 
   i=1,\\ldots, n} x_i^2 :param x: the time series to calculate the feature of :type x: numpy.ndarray :return: the value of this feature :return type: float """ if not isinstance(x, (np.ndarray, pd.Series)): x = np.asarray(x) return np.dot(x, x) 

7.2 absolute_sum_of_changes(x)

【实现功能】:返回序列x的连续变化的绝对值之和
在这里插入图片描述

【参数介绍】

  • x(pandas.Series) 需要计算特征的时间序列
  • 返回值:特征值
  • 返回值类型:float
  • 函数类型:简单

7.3 agg_autocorrelation(x, param)

【实现功能】:计算聚合函数f_agg(例如方差或者均值)处理后的自相关性,在一定程度可以衡量数据的周期性质,l表示滞后值,如果某个l计算出的值比较大,表示改时序数据具有l周期性质。

在这里插入图片描述
其中,n是时间序列Xi的长度,σ2是方差,μ表示均值

【参数介绍】

  • x(pandas.Series) 需要计算特征的时间序列
  • 返回值:特征值
  • 返回值类型:float
  • 函数类型:简单

7.4 agg_linear_trend(x, param)

【实现功能】:对时序分块聚合后(max, min, mean, meidan),然后聚合后的值做线性回归,算出 pvalue(),rvalue(相关系数), intercept(截距), slope(斜率), stderr(拟合的标准差)。

7.5 approximate_entropy(x, m, r)

近似熵,用来衡量一个时间序列的周期性、不可预测性和波动性。

7.6 ar_coefficient(x, param)

7.7 autocorrelation(x, lag)

参考资料

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/114798.html

(0)
上一篇 2025-12-06 17:10
下一篇 2025-12-06 17:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信