python?Prophet時(shí)間序列預(yù)測(cè)工具庫(kù)使用功能探索
什么是Python Prophet?
大家好,今天為大家分享一個(gè)無(wú)敵的 Python 庫(kù) - prophet。
Github地址:https://github.com/facebook/prophet
時(shí)間序列分析在許多領(lǐng)域中都是至關(guān)重要的,包括金融、天氣預(yù)測(cè)、銷售預(yù)測(cè)等。
Python Prophet是一個(gè)用于時(shí)間序列分析和預(yù)測(cè)的開源庫(kù),它由Facebook于2017年開發(fā)并發(fā)布。Prophet的設(shè)計(jì)目標(biāo)是使時(shí)間序列預(yù)測(cè)變得更加簡(jiǎn)單和可靠,特別是對(duì)于那些沒(méi)有專業(yè)時(shí)間序列分析經(jīng)驗(yàn)的用戶。
Prophet的主要特點(diǎn)
易用性:Prophet提供了一個(gè)簡(jiǎn)單且直觀的API,使得用戶能夠快速上手,不需要深入了解時(shí)間序列的復(fù)雜理論。
高度可定制性:盡管易于使用,Prophet也允許用戶進(jìn)行高度定制,以滿足不同問(wèn)題的需求??梢灾付ㄗ远x的季節(jié)性模式、假期效應(yīng)等。
自動(dòng)檢測(cè)變化點(diǎn):Prophet能夠自動(dòng)檢測(cè)時(shí)間序列中的潛在變化點(diǎn),這對(duì)于處理非穩(wěn)態(tài)時(shí)間序列非常有用。
可解釋性:Prophet提供了可視化工具,幫助用戶理解模型的預(yù)測(cè)結(jié)果,并對(duì)時(shí)間序列的趨勢(shì)和季節(jié)性變化有更清晰的認(rèn)識(shí)。
安裝Python Prophet
要開始使用Python Prophet,需要在Python環(huán)境中安裝它。可以使用pip包管理器來(lái)安裝Prophet。
在終端或命令提示符中運(yùn)行以下命令:
pip install prophet
安裝完成后,就可以在Python代碼中導(dǎo)入Prophet并開始使用它。
from fbprophet import Prophet
基本用法示例
通過(guò)一個(gè)簡(jiǎn)單的時(shí)間序列預(yù)測(cè)示例來(lái)了解Prophet的基本用法。假設(shè)有一些歷史銷售數(shù)據(jù),希望使用Prophet來(lái)預(yù)測(cè)未來(lái)的銷售情況。
步驟1:準(zhǔn)備數(shù)據(jù)
首先,需要準(zhǔn)備時(shí)間序列數(shù)據(jù)。數(shù)據(jù)應(yīng)該包含兩列:'ds'(日期時(shí)間戳)和'y'(觀測(cè)值)。
下面是一個(gè)示例:
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模型
接下來(lái),創(chuàng)建一個(gè)Prophet模型,并將數(shù)據(jù)加載到模型中。
from fbprophet import Prophet # 創(chuàng)建Prophet模型 model = Prophet() # 添加歷史數(shù)據(jù) model.fit(df)
步驟3:預(yù)測(cè)未來(lái)
一旦模型訓(xùn)練完成,可以使用它來(lái)預(yù)測(cè)未來(lái)的時(shí)間序列值。
# 創(chuàng)建一個(gè)包含未來(lái)日期的數(shù)據(jù)框 future = model.make_future_dataframe(periods=365) # 預(yù)測(cè)未來(lái)365天 # 進(jìn)行預(yù)測(cè) forecast = model.predict(future) # 查看預(yù)測(cè)結(jié)果 print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())
上述代碼中,yhat列包含了模型對(duì)未來(lái)時(shí)間點(diǎn)的預(yù)測(cè)值,yhat_lower和yhat_upper分別表示預(yù)測(cè)值的下限和上限。
步驟4:可視化結(jié)果
最后,可以使用Prophet內(nèi)置的可視化工具來(lái)查看預(yù)測(cè)結(jié)果。
# 繪制預(yù)測(cè)結(jié)果 fig = model.plot(forecast)
進(jìn)階用法示例
Prophet不僅僅局限于基本用法,它還提供了許多進(jìn)階功能,以滿足更復(fù)雜的時(shí)間序列分析需求。以下是一些進(jìn)階用法示例:
1. 指定自定義季節(jié)性模式
Prophet默認(rèn)會(huì)自動(dòng)檢測(cè)季節(jié)性模式,也可以手動(dòng)指定自定義季節(jié)性模式,以更好地?cái)M合數(shù)據(jù)。
model.add_seasonality(name='custom_seasonality', period=30, fourier_order=5)
上述代碼中,添加了一個(gè)自定義的季節(jié)性模式,周期為30天,并使用五階傅里葉級(jí)數(shù)進(jìn)行擬合。
2. 考慮假期效應(yīng)
如果時(shí)間序列數(shù)據(jù)受到假期的影響,可以使用Prophet來(lái)建模這些假期效應(yīng)。
model.add_country_holidays(country_name='US')
上述代碼中,添加了美國(guó)的假期效應(yīng)。
3. 調(diào)整模型參數(shù)
Prophet還可以調(diào)整模型的許多參數(shù),例如季節(jié)性平滑度、增長(zhǎng)趨勢(shì)的靈活性等,以優(yōu)化模型的性能。
model = Prophet(seasonality_mode='multiplicative', growth='logistic')
上述代碼中,指定了季節(jié)性模式為乘法型,并使用對(duì)數(shù)增長(zhǎng)趨勢(shì)。
性能對(duì)比
為了更好地了解Prophet的性能,進(jìn)行一個(gè)性能對(duì)比。將使用Prophet來(lái)預(yù)測(cè)銷售數(shù)據(jù),并將其與傳統(tǒng)的時(shí)間序列方法(如ARIMA)進(jìn)行比較。
# 使用Prophet進(jìn)行預(yù)測(cè)
model = Prophet()
model.fit(df)
future = model.make_future_dataframe(periods=365)
forecast = model.predict(future)
# 使用ARIMA進(jìn)行預(yù)測(cè)(示例代碼,需要安裝statsmodels庫(kù))
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分別對(duì)時(shí)間序列進(jìn)行預(yù)測(cè),并比較了它們的均方誤差(MSE)。通常情況下,Prophet在時(shí)間序列預(yù)測(cè)任務(wù)中表現(xiàn)出色。
總結(jié)
Python Prophet是一個(gè)功能強(qiáng)大且易于使用的時(shí)間序列預(yù)測(cè)工具,適用于各種領(lǐng)域的時(shí)間序列分析。本文介紹了Prophet的基本用法和進(jìn)階功能,并提供了示例代碼來(lái)幫助大家入門。無(wú)論是初學(xué)者還是有經(jīng)驗(yàn)的數(shù)據(jù)科學(xué)家,都可以從Prophet中受益,以更準(zhǔn)確地預(yù)測(cè)時(shí)間序列數(shù)據(jù)的未來(lái)趨勢(shì)。希望本文能幫助大家開始使用Python Prophet進(jìn)行時(shí)間序列分析和預(yù)測(cè)。
以上就是python Prophet時(shí)間序列預(yù)測(cè)工具庫(kù)使用功能探索的詳細(xì)內(nèi)容,更多關(guān)于python Prophet時(shí)間序列預(yù)測(cè)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python簡(jiǎn)明講解filter函數(shù)的用法
本文和你一起來(lái)探索Python中的filter函數(shù),讓你以最短的時(shí)間明白這個(gè)函數(shù)的原理。也可以利用碎片化的時(shí)間鞏固這個(gè)函數(shù),讓你在處理工作過(guò)程中更高效2022-06-06
Python根據(jù)字符串調(diào)用函數(shù)過(guò)程解析
這篇文章主要介紹了Python根據(jù)字符串調(diào)用函數(shù)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-11-11
Python爬取用戶觀影數(shù)據(jù)并分析用戶與電影之間的隱藏信息!
看電影前很多人都喜歡去 『豆瓣』 看影評(píng),所以我爬取44130條 『豆瓣』 的用戶觀影數(shù)據(jù),分析用戶之間的關(guān)系,電影之間的聯(lián)系,以及用戶和電影之間的隱藏關(guān)系,需要的朋友可以參考下2021-06-06
Python如何調(diào)用另一個(gè)類的方法和屬性
在Python面向?qū)ο缶幊讨?類與類之間的交互是非常常見(jiàn)的場(chǎng)景,本文將詳細(xì)介紹在Python中一個(gè)類如何調(diào)用另一個(gè)類的方法和屬性,大家可以根據(jù)需要進(jìn)行選擇2025-08-08
Python restful框架接口開發(fā)實(shí)現(xiàn)
這篇文章主要介紹了Python restful框架接口開發(fā)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
基于Python做一個(gè)簡(jiǎn)單的動(dòng)圖生成器
現(xiàn)在的年輕人都開始每天保溫杯里泡枸杞,這怎么能行呢?于是懷揣著愉悅心情的想法,我開始制作GIF動(dòng)圖生成器,這個(gè)小工具制作的目的是為了將多張圖片組合后生成一張動(dòng)態(tài)的GIF圖片,感興趣的可以嘗試一下2023-01-01
Python實(shí)現(xiàn)基于socket的udp傳輸與接收功能詳解
這篇文章主要介紹了Python實(shí)現(xiàn)基于socket的udp傳輸與接收功能,結(jié)合實(shí)例形式詳細(xì)分析了Python使用socket進(jìn)行udp文件傳輸與接收相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下2019-11-11

