python?Prophet時間序列預(yù)測工具庫使用功能探索
什么是Python Prophet?
大家好,今天為大家分享一個無敵的 Python 庫 - prophet。
Github地址:https://github.com/facebook/prophet
時間序列分析在許多領(lǐng)域中都是至關(guān)重要的,包括金融、天氣預(yù)測、銷售預(yù)測等。
Python Prophet是一個用于時間序列分析和預(yù)測的開源庫,它由Facebook于2017年開發(fā)并發(fā)布。Prophet的設(shè)計目標(biāo)是使時間序列預(yù)測變得更加簡單和可靠,特別是對于那些沒有專業(yè)時間序列分析經(jīng)驗(yàn)的用戶。
Prophet的主要特點(diǎn)
易用性:Prophet提供了一個簡單且直觀的API,使得用戶能夠快速上手,不需要深入了解時間序列的復(fù)雜理論。
高度可定制性:盡管易于使用,Prophet也允許用戶進(jìn)行高度定制,以滿足不同問題的需求??梢灾付ㄗ远x的季節(jié)性模式、假期效應(yīng)等。
自動檢測變化點(diǎn):Prophet能夠自動檢測時間序列中的潛在變化點(diǎn),這對于處理非穩(wěn)態(tài)時間序列非常有用。
可解釋性:Prophet提供了可視化工具,幫助用戶理解模型的預(yù)測結(jié)果,并對時間序列的趨勢和季節(jié)性變化有更清晰的認(rèn)識。
安裝Python Prophet
要開始使用Python Prophet,需要在Python環(huán)境中安裝它??梢允褂胮ip包管理器來安裝Prophet。
在終端或命令提示符中運(yùn)行以下命令:
pip install prophet
安裝完成后,就可以在Python代碼中導(dǎo)入Prophet并開始使用它。
from fbprophet import Prophet
基本用法示例
通過一個簡單的時間序列預(yù)測示例來了解Prophet的基本用法。假設(shè)有一些歷史銷售數(shù)據(jù),希望使用Prophet來預(yù)測未來的銷售情況。
步驟1:準(zhǔn)備數(shù)據(jù)
首先,需要準(zhǔn)備時間序列數(shù)據(jù)。數(shù)據(jù)應(yīng)該包含兩列:'ds'(日期時間戳)和'y'(觀測值)。
下面是一個示例:
ds y 0 2021-01-01 100 1 2021-01-02 120 2 2021-01-03 130 3 2021-01-04 150 4 2021-01-05 170
步驟2:創(chuàng)建Prophet模型
接下來,創(chuàng)建一個Prophet模型,并將數(shù)據(jù)加載到模型中。
from fbprophet import Prophet # 創(chuàng)建Prophet模型 model = Prophet() # 添加歷史數(shù)據(jù) model.fit(df)
步驟3:預(yù)測未來
一旦模型訓(xùn)練完成,可以使用它來預(yù)測未來的時間序列值。
# 創(chuàng)建一個包含未來日期的數(shù)據(jù)框 future = model.make_future_dataframe(periods=365) # 預(yù)測未來365天 # 進(jìn)行預(yù)測 forecast = model.predict(future) # 查看預(yù)測結(jié)果 print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())
上述代碼中,yhat
列包含了模型對未來時間點(diǎn)的預(yù)測值,yhat_lower
和yhat_upper
分別表示預(yù)測值的下限和上限。
步驟4:可視化結(jié)果
最后,可以使用Prophet內(nèi)置的可視化工具來查看預(yù)測結(jié)果。
# 繪制預(yù)測結(jié)果 fig = model.plot(forecast)
進(jìn)階用法示例
Prophet不僅僅局限于基本用法,它還提供了許多進(jìn)階功能,以滿足更復(fù)雜的時間序列分析需求。以下是一些進(jìn)階用法示例:
1. 指定自定義季節(jié)性模式
Prophet默認(rèn)會自動檢測季節(jié)性模式,也可以手動指定自定義季節(jié)性模式,以更好地擬合數(shù)據(jù)。
model.add_seasonality(name='custom_seasonality', period=30, fourier_order=5)
上述代碼中,添加了一個自定義的季節(jié)性模式,周期為30天,并使用五階傅里葉級數(shù)進(jìn)行擬合。
2. 考慮假期效應(yīng)
如果時間序列數(shù)據(jù)受到假期的影響,可以使用Prophet來建模這些假期效應(yīng)。
model.add_country_holidays(country_name='US')
上述代碼中,添加了美國的假期效應(yīng)。
3. 調(diào)整模型參數(shù)
Prophet還可以調(diào)整模型的許多參數(shù),例如季節(jié)性平滑度、增長趨勢的靈活性等,以優(yōu)化模型的性能。
model = Prophet(seasonality_mode='multiplicative', growth='logistic')
上述代碼中,指定了季節(jié)性模式為乘法型,并使用對數(shù)增長趨勢。
性能對比
為了更好地了解Prophet的性能,進(jìn)行一個性能對比。將使用Prophet來預(yù)測銷售數(shù)據(jù),并將其與傳統(tǒng)的時間序列方法(如ARIMA)進(jìn)行比較。
# 使用Prophet進(jìn)行預(yù)測 model = Prophet() model.fit(df) future = model.make_future_dataframe(periods=365) forecast = model.predict(future) # 使用ARIMA進(jìn)行預(yù)測(示例代碼,需要安裝statsmodels庫) from statsmodels.tsa.arima_model import ARIMA arima_model = ARIMA(df['y'], order=(5,1,0)) arima_result = arima_model.fit(disp=False) arima_forecast = arima_result.predict(start=len(df), end=len(df)+365, typ='levels') # 比較結(jié)果 prophet_mse = ((forecast['yhat'] - df['y']) ** 2).mean() arima_mse = ((arima_forecast - df['y']) ** 2).mean() print(f"Prophet MSE: {prophet_mse}") print(f"ARIMA MSE: {arima_mse}")
上述代碼中,使用Prophet和ARIMA分別對時間序列進(jìn)行預(yù)測,并比較了它們的均方誤差(MSE)。通常情況下,Prophet在時間序列預(yù)測任務(wù)中表現(xiàn)出色。
總結(jié)
Python Prophet是一個功能強(qiáng)大且易于使用的時間序列預(yù)測工具,適用于各種領(lǐng)域的時間序列分析。本文介紹了Prophet的基本用法和進(jìn)階功能,并提供了示例代碼來幫助大家入門。無論是初學(xué)者還是有經(jīng)驗(yàn)的數(shù)據(jù)科學(xué)家,都可以從Prophet中受益,以更準(zhǔn)確地預(yù)測時間序列數(shù)據(jù)的未來趨勢。希望本文能幫助大家開始使用Python Prophet進(jìn)行時間序列分析和預(yù)測。
以上就是python Prophet時間序列預(yù)測工具庫使用功能探索的詳細(xì)內(nèi)容,更多關(guān)于python Prophet時間序列預(yù)測的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python3去除頭尾指定字符的函數(shù)strip()、lstrip()、rstrip()用法詳解
這篇文章主要介紹了Python3去除頭尾指定字符的函數(shù)strip()、lstrip()、rstrip()用法詳解,需要的朋友可以參考下2021-04-04Python openpyxl 遍歷所有sheet 查找特定字符串的方法
今天小編就為大家分享一篇Python openpyxl 遍歷所有sheet 查找特定字符串的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12Pandas 合并多個Dataframe(merge,concat)的方法
今天小編就為大家分享一篇Pandas 合并多個Dataframe(merge,concat)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06python開發(fā)之IDEL(Python GUI)的使用方法圖文詳解
這篇文章主要介紹了python開發(fā)之IDEL(Python GUI)的使用方法,結(jié)合圖文形式較為詳細(xì)的分析總結(jié)了Python GUI的具體使用方法,需要的朋友可以參考下2015-11-11Python容器使用的5個技巧和2個誤區(qū)總結(jié)
在本篇文章里小編給大家整理的是關(guān)于Python容器使用的5個技巧和2個誤區(qū)的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們學(xué)習(xí)下。2019-09-09關(guān)于不懂Chromedriver如何配置環(huán)境變量問題解決方法
這篇文章主要介紹了關(guān)于不懂Chromedriver如何配置環(huán)境變量問題解決方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-06-06