大家好,欢迎来到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


















