时间序列数据特征提取TsFresh

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

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

1. 源码和数据地址

链接:https://pan.baidu.com/s/1VjHgdcIx9WY3VigHMkBCKw
提取码:gqs1

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 中包含有许多提取特征的函数,首先我们导入相应的数据包,如下所示:

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)

自回归模型系数,适用于极大似然估计的AR(k)模型,参数k是滞后项。
在这里插入图片描述

7.7 autocorrelation(x, lag)

滞后lag的自相关系数。
在这里插入图片描述

参考资料

【1】 tsfresh官网:https://tsfresh.readthedocs.io/en/latest/text/introduction.html
【2】时序数据处理工具-时间序列数据特征提取TsFresh:https://blog.csdn.net/qq_22290797/article/details/108637240
【3】时间序列 工具库学习(1) tsfresh特征提取、特征选择

  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值