时间序列特征提取的Python和Pandas代码示例

使用Pandas和Python从时间序列数据中提取有意义的特征,包括移动平均,自相关和傅里叶变换。

创新互联"三网合一"的企业建站思路。企业可建设拥有电脑版、微信版、手机版的企业网站。实现跨屏营销,产品发布一步更新,电脑网络+移动网络一网打尽,满足企业的营销需求!创新互联具备承接各种类型的成都网站设计、成都网站制作项目的能力。经过十多年的努力的开拓,为不同行业的企事业单位提供了优质的服务,并获得了客户的一致好评。

前言

时间序列分析是理解和预测各个行业(如金融、经济、医疗保健等)趋势的强大工具。特征提取是这一过程中的关键步骤,它涉及将原始数据转换为有意义的特征,可用于训练模型进行预测和分析。在本文中,我们将探索使用Python和Pandas的时间序列特征提取技术。

在深入研究特征提取之前,让我们简要回顾一下时间序列数据。时间序列数据是按时间顺序索引的数据点序列。时间序列数据的例子包括股票价格、温度测量和交通数据。时间序列数据可以是单变量,也可以是多变量。单变量时间序列数据只有一个变量,而多变量时间序列数据有多个变量。

有各种各样的特征提取技术可以用于时间序列分析。在本文中,我们将介绍以下技术:

  • Resampling
  • Moving Average
  • Exponential Smoothing
  • Autocorrelation
  • Fourier Transform

1、Resampling

Resampling 重采样主要是改变时间序列数据的频率。这对于平滑噪声或将数据采样到较低的频率很有用。Pandas提供了resample()方法对时间序列数据进行重新采样。resample()方法可用于对数据进行上采样或下采样。下面是一个如何将时间序列降采样到每日频率的示例:

import pandas as pd

# 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的时间序列特征提取技术。这些技术可以帮助将原始时间序列数据转换为可用于分析和预测的有意义的特征,在训练机器学习模型时,这些特征都可以当作额外的数据输入到模型中,可以增加模型的预测能力。

网页标题:时间序列特征提取的Python和Pandas代码示例
地址分享:http://www.gawzjz.com/qtweb2/news41/2791.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联