python tsfresh特征中文详解

tsfresh是开源的提取时序数据特征的python包,能够提取出超过64种特征,堪称提取时序特征的瑞士军刀。最近有需求,所以一直在看,目前还没有中文文档, 有些特征含义还是很难懂的,我把我已经看懂的一部分放这,没看懂的我只写了标题,待我看懂我添加注解。

tsfresh.feature_extraction.feature_calculators.abs_energy(x)

时间序列的平方和
E = ∑ i = 1 , . . . , n x i 2 E = \sum_{i=1,...,n}x_i^2 E=i=1,...,nxi2
参数:x(pandas.Series) 需要计算特征的时间序列
返回值:特征值
返回值类型:float
函数类型:简单

tsfresh.feature_extraction.feature_calculators.absolute_sum_of_changes(x)

返回序列x的连续变化的绝对值之和
∑ i = 1 , . . . , n − 1 ∣ x i + 1 − x i ∣ \sum_{i=1,...,n-1} | x_{i+1} - x_i| i=1,...,n1xi+1xi
参数:x(pandas.Series) 需要计算特征的时间序列
返回值:特征值
返回值类型:float
函数类型:简单

tsfresh.feature_extraction.feature_calculators.agg_autocorrelation(x, param)

计算聚合函数f_agg(例如方差或者均值)处理后的自相关性,在一定程度可以衡量数据的周期性质, l l l表示滞后值,如果某个 l l l计算出的值比较大,表示改时序数据具有 l l l周期性质。
1 n − 1 ∑ i = 1 , . . . , n 1 ( n − l ) σ 2 ∑ t = 1 n − l ( X t − μ ) ( X t − 1 − μ ) \frac{1}{n-1} \sum_{i=1,...,n} \frac{1}{(n-l)\sigma^2} \sum_{t=1}^{n-l}(X_t -\mu)(X_{t-1} -\mu) n11i=1,...,n(nl)σ21t=1nl(Xtμ)(Xt1μ)
n是时间序列 X i X_i Xi 的长度, σ 2 \sigma^2 σ2 是方差, μ \mu μ表示均值
参数:x(pandas.Series) 需要计算特征的时间序列
返回值:特征值
返回值类型:float
函数类型:简单

tsfresh.feature_extraction.feature_calculators.agg_linear_trend(x, param)

对时序分块聚合后(max, min, mean, meidan),然后聚合后的值做线性回归,算出 pvalue(),rvalue(相关系数), intercept(截距), slope(斜率), stderr(拟合的标准差)
Parameters: x (pandas.Series) – the time series to calculate the feature of
param (list) – contains dictionaries {“attr”: x, “chunk_len”: l, “f_agg”: f} with x, f an string and l an int
Returns: the different feature values
Return type: pandas.Series

tsfresh.feature_extraction.feature_calculators.approximate_entropy(x, m, r)

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

tsfresh.feature_extraction.feature_calculators.ar_coefficient(x, param)

自回归模型系数,

tsfresh.feature_extraction.feature_calculators.augmented_dickey_fuller(x, param)
tsfresh.feature_extraction.feature_calculators.autocorrelation(x, lag)

滞后lag的自相关系数
1 ( n − l ) σ 2 ∑ t = 1 n − l ( X t − μ ) ( X t + l − μ ) \frac{1}{(n-l)\sigma^2} \sum_{t=1}^{n-l}(X_t - \mu)(X_{t+l}-\mu) (nl)σ21t=1nl(Xtμ)(Xt+lμ)

tsfresh.feature_extraction.feature_calculators.binned_entropy(x, max_bins)

把整个序列按值均分成max_bins个桶,然后把每个值放进相应的桶中,然后求熵。
∑ k = 0 m i n ( m a x _ b i n s , l e n ( x ) ) p k l o g ( p k ) ⋅ 1 ( p k > 0 ) \sum_{k=0}^{min(max\_bins, len(x))} p_k log(p_k) \cdot\mathbf{1}_{(p_k > 0)} k=0min(max_bins,len(x))pklog(pk)1(pk>0)
p k p_k pk 表示落在第k个桶中的数占总体的比例。
这个特征是为了衡量样本值分布的均匀度。
参数:x(pandas.Series) 需要计算特征的时间序列
   max_bins (int) 桶的数量
返回值:特征值
返回值类型:float
函数类型:简单

tsfresh.feature_extraction.feature_calculators.c3(x, lag)

1 n − 2 l a g ∑ i = 0 n − 2 l a g x i + 2 ⋅ l a g 2 ⋅ x i + l a g ⋅ x i \frac{1}{n-2lag} \sum_{i=0}^{n-2lag} x_{i + 2 \cdot lag}^2 \cdot x_{i + lag} \cdot x_{i} n2lag1i=0n2lagxi+2lag2xi+lagxi
等同于
E [ L 2 ( X ) 2 ⋅ L ( X ) ⋅ X ] \mathbb{E}[L^2(X)^2 \cdot L(X) \cdot X] E[L2(X)2L(X)X]
衡量时序数据的非线性性

tsfresh.feature_extraction.feature_calculators.change_quantiles(x, ql, qh, isabs, f_agg)

先用ql和qh两个分位数在x中确定出一个区间,然后在这个区间里计算时序数据的均值、绝对值、连续变化值。

Parameters:
x (pandas.Series) – 时序数据
ql (float) – 分位数的下限
qh (float) – 分位数的上线
isabs (bool) – 使用使用绝对值
f_agg (str, name of a numpy function (e.g. mean, var, std, median)) – numpy自带的聚合函数(均值,方差,标准差,中位数)

tsfresh.feature_extraction.feature_calculators.cid_ce(x, normalize)

用来评估时间序列的复杂度,越复杂的序列有越多的谷峰。
∑ i = 0 n − 2 l a g ( x i − x i + 1 ) 2 \sqrt{ \sum_{i=0}^{n-2lag} ( x_{i} - x_{i+1})^2 } i=0n2lag(xixi+1)2

tsfresh.feature_extraction.feature_calculators.count_above_mean(x)

大于均值的数的个数

tsfresh.feature_extraction.feature_calculators.count_below_mean(x)

小于均值的数的个数

tsfresh.feature_extraction.feature_calculators.cwt_coefficients(x, param)

2 3 a π 1 4 ( 1 − x 2 a 2 ) e x p ( − x 2 2 a 2 ) \frac{2}{\sqrt{3a} \pi^{\frac{1}{4}}} (1 - \frac{x^2}{a^2}) exp(-\frac{x^2}{2a^2}) 3a π412(1a2x2)exp(2a2x2)

tsfresh.feature_extraction.feature_calculators.energy_ratio_by_chunks(x, param)

Calculates the sum of squares of chunk i out of N chunks expressed as a ratio with the sum of squares over the whole series.

Takes as input parameters the number num_segments of segments to divide the series into and segment_focus which is the segment number (starting at zero) to return a feature on.

If the length of the time series is not a multiple of the number of segments, the remaining data points are distributed on the bins starting from the first. For example, if your time series consists of 8 entries, the first two bins will contain 3 and the last two values, e.g. [ 0., 1., 2.], [ 3., 4., 5.] and [ 6., 7.].

Note that the answer for num_segments = 1 is a trivial “1” but we handle this scenario in case somebody calls it. Sum of the ratios should be 1.0.

Parameters:

x (numpy.ndarray) – the time series to calculate the feature of
param – contains dictionaries {“num_segments”: N, “segment_focus”: i} with N, i both ints

Returns:

the feature values

Return type:

list of tuples (index, data)

tsfresh.feature_extraction.feature_calculators.fft_aggregated(x, param)

Returns the spectral centroid (mean), variance, skew, and kurtosis of the absolute fourier transform spectrum.

Parameters:

x (numpy.ndarray) – the time series to calculate the feature of
param (list) – contains dictionaries {“aggtype”: s} where s str and in [“centroid”, “variance”, “skew”, “kurtosis”]

Returns:

the different feature values

Return type:

pandas.Series

This function is of type: combiner

tsfresh.feature_extraction.feature_calculators.fft_coefficient(x, param)

Calculates the fourier coefficients of the one-dimensional discrete Fourier Transform for real input by fast fourier transformation algorithm

A k = ∑ m = 0 n − 1 a m exp ⁡ { − 2 π i m k n } , k = 0 , … , n − 1. A_k = \sum_{m=0}^{n-1} a_m \exp \left \{ -2 \pi i \frac{m k}{n} \right \}, \qquad k = 0,\ldots , n-1. Ak=m=0n1amexp{2πinmk},k=0,,n1.

The resulting coefficients will be complex, this feature calculator can return the real part (attr==”real”), the imaginary part (attr==”imag), the absolute value (attr=”“abs) and the angle in degrees (attr==”angle).

Parameters:

x (numpy.ndarray) – the time series to calculate the feature of
param (list) – contains dictionaries {“coeff”: x, “attr”: s} with x int and x >= 0, s str and in [“real”, “imag”, “abs”, “angle”]

Returns:

the different feature values

Return type:

pandas.Series

This function is of type: combiner

tsfresh.feature_extraction.feature_calculators.first_location_of_maximum(x)

最大值第一次出现的位置

tsfresh.feature_extraction.feature_calculators.first_location_of_minimum(x)

最小值第一次出现的位置

tsfresh.feature_extraction.feature_calculators.friedrich_coefficients(x, param)

Coefficients of polynomial h(x), which has been fitted to the deterministic dynamics of Langevin model
x ˙ ( t ) = h ( x ( t ) ) + N ( 0 , R ) \dot{x}(t) = h(x(t)) + \mathcal{N}(0,R) x˙(t)=h(x(t))+N(0,R)

as described by [1].

For short time-series this method is highly dependent on the parameters.

References

[1] Friedrich et al. (2000): Physics Letters A 271, p. 217-222
Extracting model equations from experimental data

Parameters:

x (numpy.ndarray) – the time series to calculate the feature of
param (list) – contains dictionaries {“m”: x, “r”: y, “coeff”: z} with x being positive integer, the order of polynom to fit for estimating fixed points of dynamics, y positive float, the number of quantils to use for averaging and finally z, a positive integer corresponding to the returned coefficient

Returns:

the different feature values

Return type:

pandas.Series

tsfresh.feature_extraction.feature_calculators.has_duplicate(x)

有没有重复值

tsfresh.feature_extraction.feature_calculators.has_duplicate_max(x

最大值有没有重复

tsfresh.feature_extraction.feature_calculators.has_duplicate_min(x)

最小值有没有重复

tsfresh.feature_extraction.feature_calculators.index_mass_quantile(x, param)
tsfresh.feature_extraction.feature_calculators.kurtosis(x)
tsfresh.feature_extraction.feature_calculators.large_standard_deviation(x, r)

标准差是否大于r乘以最大值减最小值
s t d ( x ) > r ∗ ( m a x ( X ) − m i n ( X ) ) std(x) > r * (max(X)-min(X)) std(x)>r(max(X)min(X))

tsfresh.feature_extraction.feature_calculators.last_location_of_maximum(x)

最大值最后出现的位置

tsfresh.feature_extraction.feature_calculators.last_location_of_minimum(x)

最小值最后出现的位置

tsfresh.feature_extraction.feature_calculators.length(x)

x的长度

tsfresh.feature_extraction.feature_calculators.linear_trend(x, param)

Calculate a linear least-squares regression for the values of the time series versus the sequence from 0 to length of the time series minus one. This feature assumes the signal to be uniformly sampled. It will not use the time stamps to fit the model. The parameters control which of the characteristics are returned.

Possible extracted attributes are “pvalue”, “rvalue”, “intercept”, “slope”, “stderr”, see the documentation of linregress for more information.

Parameters:

x (numpy.ndarray) – the time series to calculate the feature of
param (list) – contains dictionaries {“attr”: x} with x an string, the attribute name of the regression model

Returns:

the different feature values

Return type:

pandas.Series

This function is of type: combiner

tsfresh.feature_extraction.feature_calculators.longest_strike_above_mean(x)

大于均值的最长连续子序列长度

tsfresh.feature_extraction.feature_calculators.longest_strike_below_mean(x)

小于均值的最长连续子序列长度

tsfresh.feature_extraction.feature_calculators.max_langevin_fixed_point(x, r, m)

Largest fixed point of dynamics :math:argmax_x {h(x)=0}` estimated from polynomial h(x), which has been fitted to the deterministic dynamics of Langevin model
( ˙ x ) ( t ) = h ( x ( t ) ) + R ( N ) ( 0 , 1 ) \dot(x)(t) = h(x(t)) + R \mathcal(N)(0,1) (˙x)(t)=h(x(t))+R(N)(0,1)
as described by

Friedrich et al. (2000): Physics Letters A 271, p. 217-222 Extracting model equations from experimental data
For short time-series this method is highly dependent on the parameters.

Parameters:

x (numpy.ndarray) – the time series to calculate the feature of
m (int) – order of polynom to fit for estimating fixed points of dynamics
r (float) – number of quantils to use for averaging

Returns:

Largest fixed point of deterministic dynamics

Return type:

float

tsfresh.feature_extraction.feature_calculators.maximum(x)

最大值

tsfresh.feature_extraction.feature_calculators.mean(x)

均值

tsfresh.feature_extraction.feature_calculators.mean_abs_change(x)

连续变化值绝对值的均值
1 n ∑ i = 1 , … , n − 1 ∣ x i + 1 − x i ∣ \frac{1}{n} \sum_{i=1,\ldots, n-1} | x_{i+1} - x_{i}| n1i=1,,n1xi+1xi

tsfresh.feature_extraction.feature_calculators.mean_change(x)

连续变化值的均值
1 n ∑ i = 1 , … , n − 1 x i + 1 − x i \frac{1}{n} \sum_{i=1,\ldots, n-1} x_{i+1} - x_{i} n1i=1,,n1xi+1xi

tsfresh.feature_extraction.feature_calculators.mean_second_derivative_central(x)

1 n ∑ i = 1 , … , n − 1 1 2 ( x i + 2 − 2 ⋅ x i + 1 + x i ) \frac{1}{n} \sum_{i=1,\ldots, n-1} \frac{1}{2} (x_{i+2} - 2 \cdot x_{i+1} + x_i) n1i=1,,n121(xi+22xi+1+xi)

tsfresh.feature_extraction.feature_calculators.median(x)

中位数

tsfresh.feature_extraction.feature_calculators.minimum(x)

最小值

tsfresh.feature_extraction.feature_calculators.number_crossing_m(x, m)

Calculates the number of crossings of x on m. A crossing is defined as two sequential values where the first value is lower than m and the next is greater, or vice-versa. If you set m to zero, you will get the number of zero crossings.

Parameters:

x (numpy.ndarray) – the time series to calculate the feature of
m (float) – the threshold for the crossing

Returns:

the value of this feature

Return type:

int

tsfresh.feature_extraction.feature_calculators.number_cwt_peaks(x, n)

This feature calculator searches for different peaks in x. To do so, x is smoothed by a ricker wavelet and for widths ranging from 1 to n. This feature calculator returns the number of peaks that occur at enough width scales and with sufficiently high Signal-to-Noise-Ratio (SNR)

Parameters:

x (numpy.ndarray) – the time series to calculate the feature of
n (int) – maximum width to consider

Returns:

the value of this feature

Return type:

int

tsfresh.feature_extraction.feature_calculators.number_peaks(x, n)

峰值个数

tsfresh.feature_extraction.feature_calculators.partial_autocorrelation(x, param)

α k = C o v ( x t , x t − k ∣ x t − 1 , … , x t − k + 1 ) V a r ( x t ∣ x t − 1 , … , x t − k + 1 ) V a r ( x t − k ∣ x t − 1 , … , x t − k + 1 ) \alpha_k = \frac{ Cov(x_t, x_{t-k} | x_{t-1}, \ldots, x_{t-k+1})} {\sqrt{ Var(x_t | x_{t-1}, \ldots, x_{t-k+1}) Var(x_{t-k} | x_{t-1}, \ldots, x_{t-k+1} )}} αk=Var(xtxt1,,xtk+1)Var(xtkxt1,,xtk+1) Cov(xt,xtkxt1,,xtk+1)

tsfresh.feature_extraction.feature_calculators.percentage_of_reoccurring_datapoints_to_all_datapoints(x)

len(different values occurring more than once) / len(different values)
出现超过1次的值的个数/总的取值的个数(重复值只算一个)

tsfresh.feature_extraction.feature_calculators.percentage_of_reoccurring_values_to_all_values(x)

出现超过1次的值的个数/总个数

tsfresh.feature_extraction.feature_calculators.quantile(x, q)

返回x中q的分位数,q% 小于分位数。

tsfresh.feature_extraction.feature_calculators.range_count(x, min, max)

x中在min和max之间的数的个数

tsfresh.feature_extraction.feature_calculators.ratio_beyond_r_sigma(x, r)

取值大于r倍标准差的比例

tsfresh.feature_extraction.feature_calculators.ratio_value_number_to_time_series_length(x)

把 x unique后的长度除以x原始长度 len(set(x))/len(x)

tsfresh.feature_extraction.feature_calculators.sample_entropy(x)

tsfresh.feature_extraction.feature_calculators.set_property(key, value)
tsfresh.feature_extraction.feature_calculators.skewness(x)
tsfresh.feature_extraction.feature_calculators.spkt_welch_density(x, param)
tsfresh.feature_extraction.feature_calculators.standard_deviation(x)

标准差

tsfresh.feature_extraction.feature_calculators.sum_of_reoccurring_data_points(x)

出现过多次的点的个数

tsfresh.feature_extraction.feature_calculators.sum_of_reoccurring_values(x)

出现过多次的值的和

tsfresh.feature_extraction.feature_calculators.sum_values(x)

所有值的和

tsfresh.feature_extraction.feature_calculators.symmetry_looking(x, param)

∣ m e a n ( X ) − m e d i a n ( X ) ∣ < r ∗ ( m a x ( X ) − m i n ( X ) ) | mean(X)-median(X)| < r * (max(X)-min(X)) mean(X)median(X)<r(max(X)min(X))

tsfresh.feature_extraction.feature_calculators.time_reversal_asymmetry_statistic(x, lag)

1 n − 2 l a g ∑ i = 0 n − 2 l a g x i + 2 ⋅ l a g 2 ⋅ x i + l a g − x i + l a g ⋅ x i 2 \frac{1}{n-2lag} \sum_{i=0}^{n-2lag} x_{i + 2 \cdot lag}^2 \cdot x_{i + lag} - x_{i + lag} \cdot x_{i}^2 n2lag1i=0n2lagxi+2lag2xi+lagxi+lagxi2
相当于
E [ L 2 ( X ) 2 ⋅ L ( X ) − L ( X ) ⋅ X 2 ] \mathbb{E}[L^2(X)^2 \cdot L(X) - L(X) \cdot X^2] E[L2(X)2L(X)L(X)X2]

tsfresh.feature_extraction.feature_calculators.value_count(x, value)

x中值等于value的计数

tsfresh.feature_extraction.feature_calculators.variance(x)

方差

tsfresh.feature_extraction.feature_calculators.variance_larger_than_standard_deviation(x)

方差是否大于标准差

  • 20
    点赞
  • 125
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xindoo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值