Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

王林
王林ke hadapan
2023-04-12 17:43:081302semak imbas

Ekstrak ciri bermakna daripada data siri masa menggunakan Panda dan Python, termasuk purata bergerak, autokorelasi dan transformasi Fourier.

Kata Pengantar

Analisis siri masa ialah alat yang berkuasa untuk memahami dan meramalkan arah aliran dalam pelbagai industri (seperti kewangan, ekonomi, penjagaan kesihatan, dll.). Pengekstrakan ciri ialah langkah utama dalam proses ini, yang melibatkan penukaran data mentah kepada ciri yang bermakna yang boleh digunakan untuk melatih model untuk ramalan dan analisis. Dalam artikel ini, kami akan meneroka teknik pengekstrakan ciri siri masa menggunakan Python dan Panda.

Sebelum kita mendalami pengekstrakan ciri, mari kita semak secara ringkas data siri masa. Data siri masa ialah jujukan titik data yang diindeks dalam susunan masa. Contoh data siri masa termasuk harga saham, ukuran suhu dan data trafik. Data siri masa boleh menjadi univariate atau multivariate. Data siri masa univariat hanya mempunyai satu pembolehubah, manakala data siri masa berbilang variasi mempunyai berbilang pembolehubah.

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

Terdapat pelbagai teknik pengekstrakan ciri yang boleh digunakan untuk analisis siri masa. Dalam artikel ini, kami akan memperkenalkan teknik berikut:

  • Pensampelan Semula
  • Purata Pergerakan
  • Pelicinan Eksponen
  • Autokorelasi
  • Transformasi Fourier

1. Pensampelan Semula

Pensampelan semula terutamanya mengubah kekerapan data siri masa. Ini berguna untuk melicinkan bunyi atau data pensampelan kepada frekuensi yang lebih rendah. Pandas menyediakan kaedah resample() untuk sampel semula data siri masa. Kaedah resample() boleh digunakan untuk upsample atau downsample data. Berikut ialah contoh cara menurunkan sampel siri masa kepada kekerapan harian:

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)

Dalam contoh di atas, kami mencipta siri masa dengan kekerapan minit dan kemudian menggunakan kaedah resample() untuk Ia disampel ke kekerapan harian.

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

2. Moving Average

Moving Average Moving Average ialah teknik yang melicinkan data siri masa dengan membuat purata pada tetingkap bergulir. Boleh membantu menghilangkan bunyi bising dan mendapatkan arah aliran dalam data. Pandas menyediakan kaedah rolling() untuk mengira purata siri masa. Berikut ialah contoh cara mengira purata siri masa:

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)

Kami mencipta siri masa dan kemudian menggunakan kaedah rolling() untuk mengira purata bergerak dengan saiz tetingkap 3.

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

Anda boleh melihat bahawa dua nilai pertama akan menjana NAN kerana ia tidak mencapai bilangan minimum 3 purata bergerak Jika perlu, anda boleh menggunakan kaedah fillna untuk mengisi.

3. Pelicinan Eksponen

Pelicinan Eksponen Pelicinan eksponen ialah teknik untuk melicinkan data siri masa dengan memberi lebih berat kepada nilai terkini. Ia boleh membantu menghilangkan bunyi bising untuk mendapatkan arah aliran dalam data. Pandas menyediakan kaedah ewm() untuk mengira purata bergerak eksponen.

import pandas as pd
 ts = pd.Series([1, 2, 3, 4, 5])
 ts.ewm( alpha =0.5).mean()

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

Dalam contoh di atas, kami mencipta siri masa dan kemudian menggunakan kaedah ewm() untuk mengira purata bergerak eksponen dengan faktor pelicinan 0.5.

ewm mempunyai banyak parameter, di sini kami memperkenalkan beberapa parameter utama.

com: Tentukan pengecilan berdasarkan pusat jisim

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

span Tentukan pengecilan berdasarkan julat

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

separuh hayat menentukan pereputan berdasarkan separuh hayat

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

alfa menentukan pekali pelicinan α

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

Empat parameter di atas semuanya menentukan pekali pelicinan α, tetapi tiga yang pertama dikira berdasarkan syarat, dan yang terakhir ditentukan secara manual, jadi mesti ada sekurang-kurangnya satu. Contohnya, dalam contoh di atas kita Hanya menetapkan bilangan pemerhatian minimum secara manual dengan nilai dalam tetingkap 0.5

min_periods, yang lalai kepada 0.

laraskan Sama ada hendak melakukan pembetulan ralat lalainya adalah Benar.

adjust =Ture时公式如下:

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

adjust =False

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

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)

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

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)

Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa

这里我们只显示了实数的部分。

总结

在本文中,我们介绍了几种使用Python和Pandas的时间序列特征提取技术。这些技术可以帮助将原始时间序列数据转换为可用于分析和预测的有意义的特征,在训练机器学习模型时,这些特征都可以当作额外的数据输入到模型中,可以增加模型的预测能力。


Atas ialah kandungan terperinci Contoh kod Python dan Pandas untuk pengekstrakan ciri siri masa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:51cto.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam