欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

python 小波預(yù)測

謝彥文2年前8瀏覽0評論

小波預(yù)測是一種利用小波分析技術(shù)進行時間序列預(yù)測的方法。Python是一種流行的編程語言,也有許多小波分析的庫可以使用,如PyWavelets。

import numpy as np
import matplotlib.pyplot as plt
import pywt
# 生成一個隨機時間序列
np.random.seed(1234)
t = np.arange(0, 1, 0.01)
y = np.sin(2*np.pi*t) + np.random.randn(len(t))*0.1
# 小波分析
coeffs = pywt.wavedec(y, 'db4', level=2)
cA2, cD2, cD1 = coeffs
# 小波重構(gòu)
reconstruct_y = pywt.waverec(coeffs, 'db4')
# 預(yù)測未來值
future_t = np.arange(1, 1.2, 0.01)
future_y = np.zeros(len(future_t))
for i in range(len(future_t)):
# 使用最后兩個局部極值進行預(yù)測
local_max = np.max(y)
local_min = np.min(y)
for j in range(1, len(cD1)-1):
if y[j-1]< y[j] and y[j+1]< y[j]:
if y[j]< local_min:
local_min = y[j]
if y[j] >local_max:
local_max = y[j]
future_y[i] = (local_max + local_min) / 2
y = np.append(y, future_y[i])
# 繪圖
plt.subplot(2, 1, 1)
plt.plot(t, y, label='original')
plt.plot(t, reconstruct_y, label='reconstructed')
plt.legend()
plt.subplot(2, 1, 2)
plt.plot(np.append(t, future_t), np.append(y, future_y), label='predicted')
plt.plot(t, y, label='original')
plt.legend()
plt.show()

以上代碼生成了一個隨機時間序列,并使用小波分析重構(gòu)了該序列。隨后使用最近的兩個局部極值點進行預(yù)測,最后將預(yù)測的未來值繪制到圖形上。