成人免费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損失函數算法

2024-03-18 00:00:03

時間序列Prompt模型

2019-11-19 10:41:14

Python開發排序

2022-08-19 16:09:08

Python損失函數算法

2023-07-14 07:15:13

2024-04-26 08:34:44

Python編程語言PyInstalle

2021-02-14 14:31:35

機器學習Python模型

2022-07-01 09:47:20

LSTMPython代碼

2024-07-08 06:30:00

2020-07-05 23:10:20

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

2022-04-12 14:43:26

Python字典數據

2009-12-02 19:08:19

PHP跳轉代碼

2012-05-15 15:39:17

android

2024-04-26 12:29:36

2022-07-12 10:37:08

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

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精品第一页 | 在线播放国产一区二区三区 | 久久精品亚洲 | 国产第一亚洲 | 国产美女h视频 | 国产日韩欧美一区二区 | 久久久久av | 精产国产伦理一二三区 | 国产高清在线 | 国产成人精品综合 | 欧美一级网站 | 午夜精品一区二区三区在线播放 | 美女拍拍拍网站 | 色播视频在线观看 | 波多野吉衣久久 | 欧美专区在线视频 | 国产精品电影在线观看 | 国产成人精品免高潮在线观看 | 国产精品资源在线观看 | 日韩在线观看网站 | 国产精品免费一区二区三区四区 | 99久久久国产精品免费消防器 | 毛片黄片免费看 | 91精品国产综合久久久动漫日韩 | 国产精品成人一区二区三区 | 日本不卡高字幕在线2019 | 久久久久9999亚洲精品 | 新疆少妇videos高潮 | 狠狠爱免费视频 | 日韩中文一区 | 天天草天天 | 精品国产99 | 在线观看中文字幕dvd播放 | 一区二区三区国产好的精 | 日韩精品一区二区三区中文字幕 | 人人干97| 久久国内| 成人福利视频 | 久久午夜精品 | 午夜影院在线 | 国产视频福利一区 |