tsfresh是一个Python的时序数据特征挖掘的模块(官网https://tsfresh.readthedocs.io/en/latest/index.html,安装可用pip install tsfresh),提取的特征可以用来描述或聚类基于提取特征的时间序列。此外,它们还可以用于构建在时间序列上执行分类/回归任务的模型。通常,这些特性为时间序列及其动态特性提供了新的见解。该项目总共涉及64个特征,前32个特征由我翻译和调试,后32个特征由我的同事托马斯所翻译。我们在GitHub存放了项目资料和介绍https://github.com/SimaShanhe/tsfresh-feature-translation/
abs_energy(x)
译:绝对能量值
返回时序数据的绝对能量(平方和)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:绝对能量值(浮点数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae = tsf.feature_extraction.feature_calculators.abs_energy(ts)
注释:描述时序数据的离原点的平方波动情况(能量)
absolute_sum_of_changes(x)
译:一阶差分绝对和
返回时序数据的一阶差分结果的绝对值之和
参数:
(pandas.Series)计算时序特征的数据对象
返回值:一阶差分绝对和(非负浮点数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae = tsf.feature_extraction.feature_calculators.absolute_sum_of_changes(ts)
注释:描述时序数据相邻观测值之间的绝对波动情况
agg_autocorrelation(x, param)
译:各阶自相关系数的聚合统计特征
返回时序数据的各阶差分值之间的聚合(方差、均值)统计特征
参数:
(pandas.Series)计算时序特征的数据对象
parma(list) 包含一个字典{“f_agg”: x, “maxlag”, n} 其中x为聚合函数名,n为最大差分阶数
返回值:各阶自相关系数的聚合统计特征(浮点数)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'f_agg': 'mean', 'maxlag':2}]
ae = tsf.feature_extraction.feature_calculators.agg_autocorrelation(ts, param)
注释:统计时序数据各界差分间的聚合特征,依据不同的聚合函数,刻画时序数据的不同特征
agg_linear_trend(x, param)
译:基于分块时序聚合值的线性回归
返回时序数据的分块聚合后的线性回归(基于OLS)
参数:
(pandas.Series)计算时序特征的数据对象
parma(list) 包含一个字典{“attr”: x, “chunk_len”: l, “f_agg”: f}其中“f_agg”为聚合函数名,“chunk_len”指定每块数据量,“attr”为线性回归结果参数属性: “pvalue”, “rvalue”, “intercept”, “slope”, “stderr”。
返回值:指定的线性回归属性值(zip,可用list读取)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'f_agg': 'mean','attr': 'pvalue', 'chunk_len': 2}]
ae=tsf.feature_extraction.feature_calculators.agg_linear_trend(ts,param)
print(ae,list(ae))
注释:略
approximate_entropy(x, m, r)
译:近似熵
衡量时序数据的的周期性、不可预测性和波动性
参数:
(pandas.Series)计算时序特征的数据对象
m (int)对照运行数据长度
r (float) 过滤阈值(非负数)
返回值:近似熵(浮点数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.approximate_entropy(ts, 10, 0.1)
注释:相邻熵值间的比值,是一个相对量
ar_coefficient(x, param)
译:自回归系数
衡量时序数据的的周期性、不可预测性和波动性
参数:
(pandas.Series)计算时序特征的数据对象
paramm (lsit) {“coeff”: x, “k”: y}其中“coeff”自回归中第X项系数,“k”为自回归阶数
返回值:自回归系数(pandas.Series)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'coeff': 0, 'k': 10}]
ae=tsf.feature_extraction.feature_calculators.ar_coefficient(ts, param)
注释:自回归方程的各阶系数
augmented_dickey_fuller(x, param)
译:扩展迪基-福勒检验(ADF检验)
测试一个自回归模型是否存在单位根,衡量时序数据的平稳性
参数:
(pandas.Series)计算时序特征的数据对象
paramm (lsit) {“attr”: x} 其中x是字符串,包含“teststat”, “pvalue” 和“usedlag”
返回值:ADF检验统计值(浮点数)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'attr': 'pvalue'}]
ae=tsf.feature_extraction.feature_calculators.augmented_dickey_fuller(ts, param)
注释:返回ADF检验统计值
autocorrelation(x, lag)
译:lag阶自相关性
计算lag阶滞后时序数据的自相关性(浮点数)
参数:
(pandas.Series)计算时序特征的数据对象
lag(int)时序数据滞后阶数
返回值:自相关性值(浮点数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.autocorrelation(ts, 2)
注释:lag阶自相关性值
binned_entropy(x, max_bins)
译:分组熵
把整个序列按值均分成max_bins个桶,然后把每个值放进相应的桶中,然后求熵(浮点数)
参数:
(pandas.Series)计算时序特征的数据对象
max_bins(int)分组数
返回值:分组熵(浮点数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.binned_entropy(ts, 10)
注释:时序数据等距分组求熵
c3(x, lag)
译:时序数据非线性度量
基于物理学的时序数据非线性度量(浮点数)
等同于计算
其中L为时滞算子。
参数:
(pandas.Series)计算时序特征的数据对象
lag(int)时滞阶数
返回值:非线性度(浮点数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.c3(ts, 2)
注释:时序数据非线性度
change_quantiles(x, ql, qh, isabs, f_agg)
译:给定区间的时序数据描述统计
先用ql和qh两个分位数在x中确定出一个区间,然后在这个区间里计算时序数据的均值、绝对值、连续变化值。(浮点数)
参数:
(pandas.Series)计算时序特征的数据对象
ql(float)区间下界
qh(float)区间上界
isabs(bool)是否采用绝对差值
f_agg(str)numpy聚合函数,如mean,std等
返回值:区间内描述统计量(浮点数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
import numpy as np
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.change_quantiles(ts, 0.05, 0.95, False, 'mean')
注释:时序数据区间内描述统计量
cid_ce(x, normalize)
译:时序数据复杂度
用来评估时间序列的复杂度,越复杂的序列有越多的谷峰。 (浮点数)
参数:
(pandas.Series)计算时序特征的数据对象
normalize (bool) 是否对数据进行z标准化
返回值:时序数据复杂度(浮点数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.cid_ce(ts, True)
注释:时序数据复杂度
count_above_mean(x)
译:高于均值个数
统计高于时序数据均值的个数 (整数)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:高于均值个数(整数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.count_above_mean(ts)
注释:高于均值个数
count_below_mean(x)
译:低于均值个数
统计低于时序数据均值的个数 (整数)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:低于均值个数(整数)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.count_below_mean(ts)
注释:低于均值个数
cwt_coefficients(x, param)
译:Ricker小波分析
连续的小波分析,ricker子波是地震勘探中常用的子波类型,ricker子波是基于波动方程严格推导得到的。(pandas.Series)
其中,a是小波变换函数中的宽度参数。
参数:
(pandas.Series)计算时序特征的数据对象
param (list) {“widths”:x, “coeff”: y, “w”: z} 中x为整数值构成的数组,y,z都是整数值。
返回值:小波分析(pandas.Series)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [ {'widths':tuple([2,2,2]), 'coeff': 2, 'w': 2}]
ae=tsf.feature_extraction.feature_calculators.cwt_coefficients(ts, param)
print(list(ae))
注释:width参数需要可hash对象,最后返回结果可用list查看
energy_ratio_by_chunks(x, param)
译:分块局部熵比率
将时序数据分块后,计算目标块数据的熵与全体的熵比率。当数据不够均分时,会将多余的数据在前面的块中散布。(浮点数)
参数:
(pandas.Series)计算时序特征的数据对象
param – {“num_segments”: N, “segment_focus”: i} with N, i 取值均为整数
返回值:分块局部熵比率(list)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'num_segments': 10, 'segment_focus': 5} ]
ae=tsf.feature_extraction.feature_calculators.energy_ratio_by_chunks(ts, param)
注释:segment_focus是从0开始计数的,返回值为一个列表包含元组
fft_aggregated(x, param)
译:绝对傅里叶变换的谱统计量
返回绝对傅里叶变换后的光谱质心、峰度、偏度等值(pandas.Series)
参数:
(pandas.Series)计算时序特征的数据对象
param (list) {“aggtype”: s} s为字符串取值于 [“centroid”, “variance”, “skew”, “kurtosis”]
返回值:绝对傅里叶变换的谱统计量(pandas.Series)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'aggtype': 'skew'}]
ae=tsf.feature_extraction.feature_calculators.fft_aggregated(ts, param)
print(list(ae))
注释:略
fft_coefficient(x, param)
译:傅里叶变换系数
基于快速傅里叶变换算法计算一维离散傅里叶序列的系数(pandas.Series)
参数:
(pandas.Series)计算时序特征的数据对象
param (list) {“coeff”: x, “attr”: s} x正整数, s为字符串取值于 [“real”, “imag”, “abs”, “angle”]
返回值:傅里叶变换系数(pandas.Series)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'coeff': 2, 'attr': 'angle'}]
ae=tsf.feature_extraction.feature_calculators.fft_coefficient(ts, param)
print(list(ae))
注释: [“real”, “imag”, “abs”, “angle”]分别对应系数的实值部、虚值部、绝对值、角度值。
first_location_of_maximum(x)
译:最大值位置
基于时序数据长度的相对最大值位置
参数:
(pandas.Series)计算时序特征的数据对象
返回值:相对最大值位置(float)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.first_location_of_maximum(ts)
注释:返回值为pandas.Series,每个值都是最大值位置(在整个序列中的位置)与序列长度的比值
first_location_of_minimum(x)
译:最小值位置
基于时序数据长度的相对最小值位置
参数:
(pandas.Series)计算时序特征的数据对象
返回值:相对最小值位置(float)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.first_location_of_minimum(ts)
注释:返回值为pandas.Series,每个值都是最小值位置(在整个序列中的位置)与序列长度的比值
friedrich_coefficients(x, param)
调用接口未成功
译:Langevin模型拟合的多项式系数
基于确定动力学模型Langevin拟合的多项式系数(pandas.Series)
参数:
(pandas.Series)计算时序特征的数据对象
param (list) {“m”: x, “r”: y, “coeff”: z} x为正整数,是多项式拟合的最高阶数,y是正实数,用于计算均值的分位数,z为正整数,多项式的第几项。
返回值:多项式拟合系数(pandas.Series)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.friedrich_coefficients(ts, param)
注释:略
has_duplicate(x)
译:重复记录检验
检查时序数据是否有重复记录(bool)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:重复值存在与否(bool)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.has_duplicate(ts)
注释:略
has_duplicate_max(x)
译:最大值记录重复检验
检查时序数据最大记录是否有重复记录(bool)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:最大记录重复存在与否(bool)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.has_duplicate_max(ts)
注释:略
has_duplicate_min(x)
译:最小值记录重复检验
检查时序数据最小记录是否有重复记录(bool)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:最小记录重复存在与否(bool)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.has_duplicate_min(ts)
注释:略
index_mass_quantile(x, param)
译:分位数索引
计算某分位数对应的索引值(pandas.Series)
参数:
(pandas.Series)计算时序特征的数据对象
param (list) {“q”: x} x为分位数值
返回值:分位数索引(pandas.Series)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'q':50}]
ae=tsf.feature_extraction.feature_calculators.index_mass_quantile(ts, param)
注释:略
kurtosis(x)
译:峰度
计算基于修正的Fisher-Pearson矩统计量的峰度(float)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:修正的峰度(float)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.kurtosis(ts)
注释:表征概率密度分布曲线在平均值处峰值高低的特征数。
large_standard_deviation(x, r)
译:标准差是否倍于极差
标准差是否为数据范围的r倍(bool)
参数:
(pandas.Series)计算时序特征的数据对象
r (float) – 比率值
返回值:标准差是否倍于极差(bool)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.large_standard_deviation(ts, 0.2)
注释:根据经验法则,标准偏差应该是数值范围的四分之一。
last_location_of_maximum(x)
译:最大值最近位置
基于时序数据长度的相对最大值最近位置(float)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:相对最大值最近位置(float)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.last_location_of_maximum(ts)
注释:返回值为一个相对位置和时序数据长度的比值
last_location_of_minimum(x)
译:最小值最近位置
基于时序数据长度的相对最小值最近位置(float)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:相对最小值最近位置(float)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.last_location_of_minimum(ts)
注释:返回值为一个相对位置和时序数据长度的比值
length(x)
译:数据记录数
统计时序数据的总记录数(int)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:数据总行数(int)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.length(ts)
注释:略
linear_trend(x, param)
调用接口未成功
译:线性回归分析
基于最小二乘,自变量为索引(0-len(x)-1)的线性回归,认为数据是简单采样所得(pandas.Series)
参数:
(pandas.Series)计算时序特征的数据对象
param (list) {“attr”: x} x为线性回归中的结果变量名,如'pvale'。
返回值:线性回归分析(pandas.Series)
函数类型:组合
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
param = [{'attr': 'pvalue'}]
ae=tsf.feature_extraction.feature_calculators.linear_trend(ts, param)
注释:略
longest_strike_above_mean(x)
译:均值上的最长连续自列长度
返回x中大于x平均值的最长连续子序列的长度(int)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:最长连续子列长度(int)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.longest_strike_above_mean(ts)
注释:略
longest_strike_below_mean(x)
译:均值下的最长连续自列长度
返回x中小于x平均值的最长连续子序列的长度(int)
参数:
(pandas.Series)计算时序特征的数据对象
返回值:最长连续子列长度(int)
函数类型:简单
代码示例:
#!/usr/bin/python3
import tsfresh as tsf
import pandas as pd
ts = pd.Series(x) #数据x假设已经获取
ae=tsf.feature_extraction.feature_calculators.longest_strike_below_mean(ts)
注释:略