成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 時序預測常用方法代碼實現

開發 前端
時序預測是根據歷史數據來預測未來一段時間內的數據。Python 中常用的時序預測方法包括:移動平均法(Moving Average, MA)、指數平滑法(Exponential Smoothing, ES)、自回歸模型(Autoregressive Model, AR)、自回歸移動平均模型(Autoregressive Moving Average Model, ARMA)以及自回歸積分移動平均模

時序預測是根據歷史數據來預測未來一段時間內的數據。Python 中常用的時序預測方法包括:移動平均法(Moving Average, MA)、指數平滑法(Exponential Smoothing, ES)、自回歸模型(Autoregressive Model, AR)、自回歸移動平均模型(Autoregressive Moving Average Model, ARMA)以及自回歸積分移動平均模型(Autoregressive Integrated Moving Average Model, ARIMA)。

1. 移動平均法(MA)

移動平均法通過計算一定時間窗口內數據的平均值來進行預測,適用于平穩序列。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.stattools import adfuller
from statsmodels.tsa.api import SimpleExpSmoothing
# 生成模擬數據
np.random.seed(0)
data = np.random.randn(100).cumsum()
df = pd.DataFrame(data, columns=['value'])
# 檢查數據是否平穩
result = adfuller(df['value'])
print(f'ADF Statistic: {result[0]}')
print(f'p-value: {result[1]}')
# 繪制原始數據
df.plot()
plt.title('原始數據')
plt.show()
# 創建移動平均模型
window_size = 5
df['moving_average'] = df['value'].rolling(window=window_size).mean()
# 預測下一輪數據
last_window = df['value'][-window_size:].values
forecast = np.mean(last_window)
print(f"下一個時間點的預測值: {forecast}")
# 繪制預測結果
plt.figure(figsize=(12, 6))
plt.plot(df['value'], label='原始數據')
plt.plot(df['moving_average'], label='移動平均值', color='orange')
plt.axhline(y=forecast, color='red', linestyle='--', label='預測值')
plt.legend()
plt.title('移動平均法預測')
plt.show()

2. 指數平滑法(ES)

指數平滑法通過對歷史數據賦予不同的權重,距離預測點越近的數據權重越大,適用于非平穩序列。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.holtwinters import ExponentialSmoothing
# 生成模擬數據:正弦波加上隨機噪聲


np.random.seed(42)
dates = pd.date_range('20230101', periods=100)
data = np.sin(np.linspace(0, 2 * np.pi, 100)) + np.random.normal(0, 0.1, 100)
df = pd.DataFrame(data, index=dates, columns=['Value'])
# 定義并擬合指數平滑模型
model_es = ExponentialSmoothing(df['Value'], trend='add', seasnotallow='add', seasonal_periods=4)
fit_model_es = model_es.fit()
# 預測下一輪數據
forecast_es = fit_model_es.forecast(5)
# 畫圖展示原始數據和預測結果
plt.figure(figsize=(12, 6))
plt.plot(df['Value'], label='原始數據')
plt.plot(fit_model_es.fittedvalues, label='擬合值', color='green')
plt.plot(forecast_es, label='預測值', color='red')
plt.legend()
plt.title('指數平滑法預測')
plt.xlabel('日期')
plt.ylabel('值')
plt.grid(True)
plt.show()

3. 自回歸模型(AR)

自回歸模型是一種線性預測模型,它使用時間序列的過去值作為未來值的預測因子。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
# 生成自回歸過程的模擬數據
from statsmodels.tsa.arima_process import ArmaProcess


np.random.seed(42)
ar_params = [0.8]
arma_process = ArmaProcess(ar=ar_params)
simulated_data = arma_process.generate_sample(nsample=250)
dates = pd.date_range('20230101', periods=250)
df_arma = pd.Series(simulated_data, index=dates)
# 定義ARIMA模型,這里p=1表示一階自回歸
model_ar = ARIMA(df_arma, order=(1, 0, 0))
# 擬合模型
model_ar_fit = model_ar.fit()
# 進行預測,預測未來10個時間點的數據
forecast_ar = model_ar_fit.forecast(steps=10)
# 畫圖展示原始數據和預測結果
plt.figure(figsize=(12, 6))
plt.plot(df_arma, label='歷史數據')
plt.plot(pd.date_range(dates[-1], periods=10, freq='D'), forecast_ar, label='預測值', color='red')
plt.legend()
plt.title('自回歸模型預測')
plt.xlabel('日期')
plt.ylabel('值')
plt.grid(True)
plt.show()

4. 自回歸移動平均模型(ARMA)

ARMA模型結合了AR和MA模型的特點,使用時間序列的過去值和誤差項的過去值作為未來值的預測因子。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima_process import arma_generate_sample
from statsmodels.tsa.arima.model import ARIMA
# 生成ARMA過程的模擬數據
np.random.seed(42)
ar_params = [1, -0.5]
ma_params = [0.7, -0.3]
dates_arma = pd.date_range('20230101', periods=100)
arma_data = arma_generate_sample(nsample=100, ar=ar_params, ma=ma_params)
df_arma = pd.Series(arma_data, index=dates_arma, name='Value_ARMA')
# 定義并擬合ARMA模型
model_arma = ARIMA(df_arma, order=(1, 0, 2))
fit_model_arma = model_arma.fit()
# 預測下一輪數據
forecast_arma = fit_model_arma.predict(start=len(df_arma), end=len(df_arma)+4, typ='levels')
# 畫圖展示原始數據和ARMA預測結果
plt.figure(figsize=(12, 6))
plt.plot(df_arma, label='原始數據')
plt.plot(forecast_arma, label='預測值', color='purple')
plt.legend()
plt.title('ARMA模型預測')
plt.xlabel('日期')
plt.ylabel('值')
plt.grid(True)
plt.show()

5. 自回歸積分移動平均模型(ARIMA)

ARIMA模型是在ARMA模型的基礎上增加了差分操作,使得非平穩序列可以通過差分變為平穩序列。

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
# 生成非平穩的模擬數據
np.random.seed(42)
data = np.random.randn(100).cumsum()
df = pd.DataFrame(data, columns=['value'])
# 定義ARIMA模型,這里p=1, d=1, q=1
model_arima = ARIMA(df['value'], order=(1, 1, 1))
# 擬合模型
model_arima_fit = model_arima.fit()
# 進行預測,預測未來10個時間點的數據
forecast_arima = model_arima_fit.forecast(steps=10)
# 畫圖展示原始數據和預測結果
plt.figure(figsize=(12, 6))
plt.plot(df['value'], label='歷史數據')
plt.plot(pd.date_range(df.index[-1], periods=10, freq='D'), forecast_arima, label='預測值', color='red')
plt.legend()
plt.title('ARIMA模型預測')
plt.xlabel('日期')
plt.ylabel('值')
plt.grid(True)
plt.show()

注意事項

選擇合適的預測方法:根據數據的特點和需求選擇合適的預測方法,如平穩序列可以選擇AR、MA或ARMA等,非平穩序列可以選擇ARIMA等。

數據預處理:在進行時序預測之前,需要對數據進行預處理,如去除異常值、填充缺失值等。

參數調整:在實際應用中,可能需要調整模型的參數以獲得更好的預測效果,如調整移動平均的時間窗口大小、指數平滑的平滑系數、ARIMA模型的階數等。

模型診斷:通過殘差分析、AIC/BIC等指標來評估模型的性能,并進行必要的調整。

總結

時序預測是數據分析中的一個重要領域,Python 提供了豐富的庫和工具來實現各種時序預測方法。本文詳細介紹了四種常用的時序預測方法及其在 Python 中的實現,希望這些示例能幫助你更好地理解和應用時序預測技術。如果有任何其他問題或需要進一步的解釋,請隨時提問。

責任編輯:華軒 來源: 測試開發學習交流
相關推薦

2023-05-03 20:27:49

獨立預測聯合預測多元時序

2022-07-12 14:45:54

達摩院模型

2024-09-19 13:40:00

2021-11-02 17:17:42

數字化

2024-10-24 16:46:41

2022-08-27 15:03:43

Python損失函數算法

2019-11-19 10:41:14

Python開發排序

2024-03-18 00:00:03

時間序列Prompt模型

2023-07-14 07:15:13

2022-08-19 16:09:08

Python損失函數算法

2024-04-26 08:34:44

Python編程語言PyInstalle

2021-02-14 14:31:35

機器學習Python模型

2022-04-12 14:43:26

Python字典數據

2022-07-01 09:47:20

LSTMPython代碼

2020-07-05 23:10:20

網絡自動化網絡可預測性網絡

2012-05-15 15:39:17

android

2024-07-08 06:30:00

2009-12-02 19:08:19

PHP跳轉代碼

2024-04-26 12:29:36

2022-07-12 10:37:08

阿里巴巴達摩院機器學習
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区精品在线观看 | 欧美13videosex性极品 | 狠狠色综合欧美激情 | 亚洲精品日韩视频 | 亚洲成人一区二区 | 一区二区视频 | 在线视频99 | 久草综合在线 | 久久久久久蜜桃一区二区 | 日韩成人一区 | 国产精品永久免费 | 天堂久久一区 | 久久久久中文字幕 | 最新午夜综合福利视频 | 黄色毛片在线播放 | 观看av | 国产亚洲欧美日韩精品一区二区三区 | 97色在线视频 | 国产永久免费 | 久久激情视频 | 欧美黑人体内she精在线观看 | 毛片韩国| 国产精品久久久久久久久久久久午夜片 | 欧美在线视频一区二区 | 91免费小视频 | av在线播放国产 | 国产三区av | 久久久久免费精品国产小说色大师 | 99精品免费在线观看 | av免费网站在线观看 | 天天综合久久 | 日本在线视频中文字幕 | 手机看片在线播放 | 中文字幕第三页 | 久久久久亚洲国产| 精品视频一区二区 | 成人高清在线 | 欧美一区二区三区在线看 | 国产精品一区二区福利视频 | 国产高清精品一区二区三区 | 久久久久久综合 |