Heim  >  Artikel  >  Backend-Entwicklung  >  Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

王林
王林nach vorne
2023-04-12 17:43:081301Durchsuche

Extrahieren Sie mit Pandas und Python aussagekräftige Funktionen aus Zeitreihendaten, einschließlich gleitender Durchschnitte, Autokorrelation und Fourier-Transformationen.

Vorwort

Die Zeitreihenanalyse ist ein leistungsstarkes Werkzeug zum Verständnis und zur Vorhersage von Trends in verschiedenen Branchen (wie Finanzen, Wirtschaft, Gesundheitswesen usw.). Die Merkmalsextraktion ist ein wichtiger Schritt in diesem Prozess, bei dem Rohdaten in aussagekräftige Merkmale umgewandelt werden, die zum Trainieren von Modellen für Vorhersagen und Analysen verwendet werden können. In diesem Artikel werden wir Techniken zur Extraktion von Zeitreihenmerkmalen mit Python und Pandas untersuchen.

Bevor wir uns mit der Merkmalsextraktion befassen, werfen wir einen kurzen Blick auf die Zeitreihendaten. Zeitreihendaten sind eine Folge von Datenpunkten, die in zeitlicher Reihenfolge indiziert sind. Beispiele für Zeitreihendaten sind Aktienkurse, Temperaturmessungen und Verkehrsdaten. Zeitreihendaten können univariat oder multivariat sein. Univariate Zeitreihendaten haben nur eine Variable, während multivariate Zeitreihendaten mehrere Variablen haben.

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

Es gibt verschiedene Techniken zur Merkmalsextraktion, die für die Zeitreihenanalyse verwendet werden können. In diesem Artikel werden wir die folgenden Techniken behandeln: #Autokorrelation

    Fourier-Transformation
  • 1. Resampling
  • Resampling Resampling ändert hauptsächlich die Häufigkeit von Zeitreihendaten. Dies ist nützlich, um Rauschen zu glätten oder Daten auf eine niedrigere Frequenz abzutasten. Pandas bietet die Methode resample() zum erneuten Abtasten von Zeitreihendaten. Die Methode resample() kann zum Upsampling oder Downsampling von Daten verwendet werden. Hier ist ein Beispiel für das Downsampling einer Zeitreihe auf die tägliche Häufigkeit:
  • 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)
  • Im obigen Beispiel erstellen wir eine Zeitreihe mit Minutenhäufigkeit und verwenden dann die Methode resample(), um sie abzutasten eine tägliche Frequenz.

2. Gleitender Durchschnitt

Gleitender Durchschnitt Der gleitende Durchschnitt ist eine Methode zur Glättung der Zeit durch Mittelung über ein rollierendes Fenster von Sequenzdaten Techniken. Kann dabei helfen, Rauschen zu entfernen und Trends in den Daten zu erkennen. Pandas bietet die Methode „rolling()“ zur Berechnung des Durchschnitts einer Zeitreihe. Hier ist ein Beispiel für die Berechnung des Durchschnitts einer Zeitreihe:

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)

Wir erstellen eine Zeitreihe und verwenden dann die Methode „rolling()“, um den gleitenden Durchschnitt mit einer Fenstergröße von 3 zu berechnen.

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

Sie können sehen, dass die ersten beiden Werte NAN generieren, da sie die Mindestanzahl von 3 gleitenden Durchschnitten nicht erreicht haben Sie können die Fillna-Methode zum Füllen verwenden.

3、Exponentielle Glättung

Exponentielle Glättung Exponentielle Glättung ist eine Technik zum Glätten von Zeitreihendaten, indem aktuellen Werten mehr Gewicht verliehen wird. Es kann dabei helfen, Rauschen zu entfernen, um Trends in den Daten zu ermitteln. Pandas bietet die Methode ewm() zur Berechnung des exponentiellen gleitenden Durchschnitts.

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

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

Im obigen Beispiel erstellen wir eine Zeitreihe und verwenden dann die ewm()-Methode, um einen exponentiellen gleitenden Durchschnitt mit einem Glättungsfaktor von zu berechnen 0,5.

ewm hat viele Parameter, hier stellen wir einige der wichtigsten vor.

com: Geben Sie den Abfall basierend auf dem Massenschwerpunkt an Bereich#🎜🎜 #

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

Halbwertszeit Gibt den Zerfall basierend auf der Halbwertszeit an

# ?? Die oben genannten 4 Parameter sind alle angegebene Glättungskoeffizienten α, aber die ersten drei werden basierend auf Bedingungen berechnet, und der letzte wird manuell angegeben, sodass mindestens einer vorhanden sein muss. Im obigen Beispiel haben wir ihn beispielsweise direkt manuell festgelegt 0,5

min_periods Es gibt einen Wert im Fenster. Die minimale Anzahl von Beobachtungen ist standardmäßig 0.

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalenadjust Ob eine Fehlerkorrektur durchgeführt werden soll. Der Standardwert ist True.

adjust =Ture时公式如下:

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

adjust =False

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

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)

Python- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

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- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen

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

总结

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


Das obige ist der detaillierte Inhalt vonPython- und Pandas-Codebeispiele für die Extraktion von Zeitreihenmerkmalen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen