Heim >Backend-Entwicklung >Python-Tutorial >Python vergleicht zwei Zeitreihen, um festzustellen, ob sie grafisch ähnlich sind

Python vergleicht zwei Zeitreihen, um festzustellen, ob sie grafisch ähnlich sind

PHPz
PHPznach vorne
2023-04-13 17:49:031430Durchsuche

Um grafisch zu vergleichen, ob zwei Zeitreihen ähnlich sind, können Sie die folgende Methode verwenden:

  1. Visueller Vergleich: Zeichnen Sie die beiden Zeitreihen in demselben Diagramm auf und verwenden Sie dasselbe Skalen- und Achsenbeschriftungen werden verglichen. Ihre Merkmale wie Trends, Spitzen und Täler können beobachtet und verglichen werden.
  2. Gipfel- und Talvergleich: Vergleichen Sie, indem Sie die Gipfel und Täler in zwei Zeitreihen vergleichen. Ihre Amplituden und Positionen können verglichen werden.
  3. Korrelationsanalyse: Berechnen Sie den Korrelationskoeffizienten zwischen zwei Zeitreihen, um festzustellen, ob eine lineare Beziehung zwischen ihnen besteht. Wenn ihr Korrelationskoeffizient nahe bei 1 liegt, weisen sie ähnliche Trends auf.
  4. Nichtlineare Methoden: Verwenden Sie nichtlineare Methoden, um zwei Zeitreihen zu vergleichen, z. B. dynamische Zeitverzerrung, Wavelet-Transformation usw. Diese Methoden können dabei helfen, die Ähnlichkeiten zwischen zwei Zeitreihen zu erfassen.

Es ist zu beachten, dass die Ähnlichkeit in Grafiken nicht vollständig die Ähnlichkeit zwischen zwei Zeitreihen widerspiegelt, da dieselbe Grafik unterschiedlichen Zeitreihen entsprechen kann. Daher müssen beim Vergleich von Zeitreihen mehrere Informationsaspekte umfassend berücksichtigt werden.

1. Vorbereitung

Bevor Sie beginnen, müssen Sie sicherstellen, dass Python und pip erfolgreich auf Ihrem Computer installiert wurden: Super Detaillierte Python-Installationsanleitung, um mit der Installation fortzufahren.

(optional 1) Wenn Sie Python für die Datenanalyse verwenden, können Sie Anaconda direkt installieren: Anaconda, ein guter Helfer für Python-Datenanalyse und -Mining, verfügt über integriertes Python und pip.

# 🎜🎜#(optional 2) Darüber hinaus wird die Verwendung des VSCode-Editors empfohlen, der viele Vorteile bietet: Der beste Partner für die Python-Programmierung – VSCode Detaillierte Anleitung.

Bitte wählen Sie eine der folgenden Methoden, um Befehle zum Installieren von Abhängigkeiten einzugeben: 1. Windows-Umgebung Öffnen Sie Cmd (Start-Ausführen-CMD). 2. MacOS-Umgebung Öffnen Sie Terminal (Befehl+Leertaste, um Terminal aufzurufen). 3. Wenn Sie den VSCode-Editor oder Pycharm verwenden, können Sie direkt das Terminal am unteren Rand der Benutzeroberfläche verwenden.

pip install matplotlib
pip install numpy

2 Verwenden Sie Matplotlib, um zwei Zeitreihen visuell zu vergleichen

import matplotlib.pyplot as plt

# 生成时间序列数据
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 20]
y2 = [8, 12, 14, 18, 22]

# 绘制两个时间序列的折线图
plt.plot(x, y1, label='y1')
plt.plot(x, y2, label='y2')

# 设置图形属性
plt.xlabel('Time')
plt.ylabel('Value')
plt.title('Comparison of two time series')
plt.legend()

# 显示图形
plt.show()
# 🎜🎜#3 . Berechnen Sie den Korrelationskoeffizienten von zwei Zeitreihen:

import numpy as np

# 生成时间序列数据
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 20]
y2 = [8, 12, 14, 18, 22]

# 计算相关系数
corr = np.corrcoef(y1, y2)[0, 1]

# 输出结果
print('Correlation coefficient:', corr)

4. Verwenden Sie Python, um den dynamischen Time-Warping-Algorithmus (DTW) zu implementieren:

import numpy as np

# 生成时间序列数据
x = [1, 2, 3, 4, 5]
y1 = [10, 15, 13, 17, 20]
y2 = [8, 12, 14, 18, 22]

# 动态时间规整算法
def dtw_distance(ts_a, ts_b, d=lambda x, y: abs(x - y)):
DTW = {}

# 初始化边界条件
for i in range(len(ts_a)):
DTW[(i, -1)] = float('inf')
for i in range(len(ts_b)):
DTW[(-1, i)] = float('inf')
DTW[(-1, -1)] = 0

# 计算DTW矩阵
for i in range(len(ts_a)):
for j in range(len(ts_b)):
cost = d(ts_a[i], ts_b[j])
DTW[(i, j)] = cost + min(DTW[(i-1, j)], DTW[(i, j-1)], DTW[(i-1, j-1)])

# 返回DTW距离
return DTW[len(ts_a)-1, len(ts_b)-1]

# 计算两个时间序列之间的DTW距离
dtw_dist = dtw_distance(y1, y2)

# 输出结果
print('DTW distance:', dtw_dist)

Das obige ist der detaillierte Inhalt vonPython vergleicht zwei Zeitreihen, um festzustellen, ob sie grafisch ähnlich sind. 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