>  기사  >  백엔드 개발  >  Python은 두 시계열을 비교하여 그래픽적으로 유사한지 확인합니다.

Python은 두 시계열을 비교하여 그래픽적으로 유사한지 확인합니다.

PHPz
PHPz앞으로
2023-04-13 17:49:031370검색

두 시계열이 그래픽으로 유사한지 비교하려면 다음을 수행할 수 있습니다.

  1. 시각적 비교: 두 시계열을 동일한 그래프에 플롯하고 비교를 위해 동일한 척도 및 축 레이블을 사용합니다. 추세, 최고점, 최저점 등의 특성을 관찰하고 비교할 수 있습니다.
  2. 최고점과 최저점 비교: 두 시계열의 최고점과 최저점을 비교하여 비교합니다. 진폭과 위치를 비교할 수 있습니다.
  3. 상관 분석: 두 시계열 간의 상관 계수를 계산하여 선형 관계가 있는지 확인합니다. 상관 계수가 1에 가까울수록 비슷한 추세를 보입니다.
  4. 비선형 방법: 비선형 방법을 사용하여 동적 시간 왜곡, 웨이블릿 변환 등과 같은 두 시계열을 비교합니다. 이러한 방법은 두 시계열 간의 유사점을 포착하는 데 도움이 될 수 있습니다.

동일한 그래픽이 다른 시계열에 해당할 수 있기 때문에 그래픽의 유사성이 두 시계열 간의 유사성을 완전히 나타내지는 않는다는 점에 유의해야 합니다. 따라서 시계열을 비교할 때에는 정보의 여러 측면을 종합적으로 고려해야 합니다.

1. 준비

시작하기 전에 Python과 pip가 컴퓨터에 성공적으로 설치되었는지 확인해야 합니다. 설치하려면 매우 상세한 Python 설치 가이드를 참조하세요.

(선택 1) 데이터 분석을 위해 Python을 사용하는 경우 Anaconda를 직접 설치할 수 있습니다. Python 데이터 분석 및 마이닝에 유용한 도우미인 Anaconda에는 Python과 pip가 내장되어 있습니다.

(선택 2) 또한 모든 사람에게 권장됩니다. 많은 장점이 있는 VSCode 편집기를 사용하세요. Python 프로그래밍을 위한 최고의 파트너 - VSCode 상세 가이드.

종속성 설치 명령을 입력하려면 다음 방법 중 하나를 선택하세요. 1. Windows 환경에서 Cmd(Start-Run-CMD)를 엽니다. 2. MacOS 환경 터미널을 엽니다(command+space로 터미널 진입). 3. VSCode 편집기나 Pycharm을 사용하는 경우 인터페이스 하단의 터미널을 직접 사용할 수 있습니다.

pip install matplotlib
pip install numpy

2. Matplotlib를 사용하여 두 시계열을 시각적으로 비교합니다.

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. :

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. Python을 사용하여 동적 시간 왜곡 알고리즘(DTW) 구현:

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)


위 내용은 Python은 두 시계열을 비교하여 그래픽적으로 유사한지 확인합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 51cto.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제