Maison > Article > développement back-end > Python compare si deux séries chronologiques sont graphiquement similaires
Pour comparer si deux séries chronologiques sont similaires graphiquement, vous pouvez procéder comme suit :
Il est à noter que la similitude des graphiques ne représente pas complètement la similitude entre deux séries temporelles, car un même graphique peut correspondre à des séries temporelles différentes. Par conséquent, lors de la comparaison de séries chronologiques, plusieurs aspects de l’information doivent être pris en compte de manière globale.
Avant de commencer, vous devez vous assurer que Python et pip ont été installés avec succès sur votre ordinateur. Sinon, vous pouvez consulter cet article : Guide d'installation super détaillé de Python pour l'installer.
(Facultatif 1) Si le but de l'utilisation de Python est l'analyse de données, vous pouvez installer directement Anaconda : Anaconda, une bonne aide pour l'analyse et l'exploration de données Python, a Python et pip intégrés.
(Facultatif 2) De plus , il est recommandé à tout le monde d'utiliser l'éditeur VSCode, qui présente de nombreux avantages : Le meilleur partenaire pour la programmation Python - Guide détaillé VSCode.
Veuillez choisir l'une des méthodes suivantes pour saisir les commandes permettant d'installer les dépendances : 1. Ouvrez Cmd (Démarrer-Exécuter-CMD) dans un environnement Windows. 2. Environnement MacOS Ouvrez le Terminal (commande+espace pour entrer dans le Terminal). 3. Si vous utilisez l'éditeur VSCode ou Pycharm, vous pouvez utiliser directement le terminal en bas de l'interface.
pip install matplotlib pip install numpy
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()
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)
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)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!