共计 2372 个字符,预计需要花费 6 分钟才能阅读完成。
应用 Pandas 和 Python 从工夫序列数据中提取有意义的特色,包含挪动均匀,自相干和傅里叶变换。
前言
工夫序列剖析是了解和预测各个行业 (如金融、经济、医疗保健等) 趋势的弱小工具。特征提取是这一过程中的关键步骤,它波及将原始数据转换为有意义的特色,可用于训练模型进行预测和剖析。在本文中,咱们将摸索应用 Python 和 Pandas 的工夫序列特征提取技术。
在深入研究特征提取之前,让咱们简要回顾一下工夫序列数据。工夫序列数据是按工夫顺序索引的数据点序列。工夫序列数据的例子包含股票价格、温度测量和交通数据。工夫序列数据能够是单变量,也能够是多变量。单变量工夫序列数据只有一个变量,而多变量工夫序列数据有多个变量。
有各种各样的特征提取技术能够用于工夫序列剖析。在本文中,咱们将介绍以下技术:
- Resampling
- Moving Average
- Exponential Smoothing
- Autocorrelation
- Fourier Transform
1、Resampling
Resampling 重采样次要是扭转工夫序列数据的频率。这对于平滑噪声或将数据采样到较低的频率很有用。Pandas 提供了 resample()办法对工夫序列数据进行从新采样。resample()办法可用于对数据进行上采样或下采样。上面是一个如何将工夫序列降采样到每日频率的示例:
importpandasaspd
# create a time series with minute frequency
ts=pd.Series([1, 2, 3, 4, 5], index=pd.date_range('2022-01-01', periods=5, freq='T'))
# downsample to daily frequency
daily_ts=ts.resample('D').sum()
print(daily_ts)
在下面的例子中,咱们创立了一个以分钟为频率的工夫序列,而后应用 resample()办法将其采样到每天的频率。
2、Moving Average
Moving Average 挪动均匀是一种通过在滚动窗口上求平均值来平滑工夫序列数据的技术。能够帮忙去除噪声并失去数据的趋势。Pandas 提供了 rolling()办法来计算工夫序列的平均值。上面是一个如何计算工夫序列的平均值的例子:
import pandas as pd
# create a time series
ts = pd.Series([1, 2, 3, 4, 5])
# calculate the rolling mean with a window size of 3
rolling_mean = ts.rolling(window=3).mean()
print(rolling_mean)
咱们创立了一个工夫序列,而后应用 rolling()办法计算窗口大小为 3 的挪动平均值。
能够看到前两个值因为没有达到挪动均匀的最小数量 3,所以会产生 NAN,如果需要的话能够再应用 fillna 办法进行填充。
3、Exponential Smoothing
Exponential Smoothing 指数平滑是一种通过赋予最近值更多权重来平滑工夫序列数据的技术。它能够帮忙去除噪声取得数据的趋势。Pandas 提供了计算指数挪动均匀的 ewm()办法。
import pandas as pd
ts = pd.Series([1, 2, 3, 4, 5])
ts.ewm(alpha =0.5).mean()
在下面的例子中,咱们创立了一个工夫序列,而后应用 ewm()办法计算平滑因子为 0.5 的指数挪动均匀。
ewm 有很多的参数,这里咱们介绍几个次要的
com:依据质心指定衰减
span 依据范畴指定衰减
halflife 依据半衰期指定衰减
alpha 指定平滑系数 α
以上 4 个参数都是指定平滑系数 α,只是前三个是依据条件计算出来的,最初一个是手动指定,所以至多要有一个,例如下面的例子咱们就间接手动设定了 0.5
min_periods 窗口中具备值的最小察看数,默认 0
adjust 是否进行误差修改 默认 True
adjust =Ture 时公式如下:
adjust =False
4、Autocorrelation
Autocorrelation 自相干是一种用于测量工夫序列与其滞后版本之间相关性的技术。能够辨认数据中反复的模式。Pandas 提供了 autocorr()办法来计算自相关性。
import pandas as pd
# create a time series
ts = pd.Series([1, 2, 3, 4, 5])
# calculate the autocorrelation with a lag of 1
autocorr = ts.autocorr(lag=1)
print(autocorr)
5、Fourier Transform
Fourier Transform 傅里叶变换是一种将工夫序列数据从时域变换到频域的技术。能够辨认数据中的周期性模式。咱们能够应用 numpy 的 fft()办法来计算工夫序列的疾速傅里叶变换。
import pandas as pd
import numpy as np
# create a time series
ts = pd.Series([1, 2, 3, 4, 5])
# calculate the Fourier transform
fft = pd.Series(np.fft.fft(ts).real)
print(fft)
这里咱们只显示了实数的局部
总结
在本文中,咱们介绍了几种应用 Python 和 Pandas 的工夫序列特征提取技术。这些技术能够帮忙将原始工夫序列数据转换为可用于剖析和预测的有意义的特色,在训练机器学习模型时,这些特色都能够当作额定的数据输出到模型中,能够减少模型的预测能力。
https://avoid.overfit.cn/post/e1f53611aac742b383b3a01e5110aa66
作者:Cole Hagen