最近公眾號的粉絲量一直都處於上漲狀態,可喜可賀,當然,作為一個上進的(摸魚)公眾號博主,當然要追求更遠大的目標。我希望知道一個月後公眾號的粉絲量會達到什麼程度,並以此加強公眾號的宣傳方式。
正好,Facebook開源了一個名為“先知”(prophet)的模型,其能基於加法模型預測時間序列資料,它的非線性趨勢與年、周、日的季節性以及假日效應相吻合。而且對丟失的資料和趨勢的變化很健壯,通常能很好地處理異常值。
我們將根據 Python 實用寶典 最近60天的關注量變化趨勢用來預測未來30天的關注量大小。
1. 安裝fbprophet
現在,就讓我們來試一下吧!首先是安裝fbprophet, 這裡的前提是大家都安裝好了Python, 如果沒有的話推薦看:python超詳細安裝指南,如果你按照官方的教程來進行安裝, 你會發現TM啥也安裝不上
第一步,我們需要安裝fbprophet的依賴PyStan:
pip install pystan
第二步,使用conda命令安裝(需要安裝anaconda, 搜anaconda官網安裝即可):
conda install -c conda-forge fbprophet
pip install fbprophet
2.匯出公眾號資料
這時候就要用F12大法了,在當前使用者分析頁空白處右鍵—檢查,或者直接按F12開啟開發者工具。
然後選擇最近兩個月的資料,找到useranalysis的資料包,點開來就會找到我們需要的資料,把這一片json資料儲存下來存為data.json檔案即可,如下圖所示。
3.處理資料
載入json資料:
import json
f = open('./data.json', 'r', encoding='utf-8')
json_data = json.load(f)
f.close()
print(json_data)
現在需要將日期和其對應的總粉絲數提取出來為一個pandas的dataframe. 如果你還沒有安裝 pandas,請在cmd/Terminal輸入
pip install pandas
即可安裝成功。
import pandas as pd
# 將日期和其對應的總粉絲數提取出來為一個pandas的dataframe
list_number = json_data['category_list'][0]['list']
df = pd.DataFrame(list_number)
print(df)
效果:
看得出來dataframe有點像字典和列表的集合,接下來就要開始進行預測了!
4.預測未來30天的資料
接下來需要生成prophet物件,呼叫預測函式,預測未來30天的資料變化:
from fbprophet import Prophet
# prophet內部需要將日期列設為ds,預測的值設為y
df.rename(columns={'date':'ds', 'cumulate_user':'y'}, inplace=True)
print(df)
# 呼叫"先知"生成物件
m = Prophet()
# 使用"先知物件"進行預測
m.fit(df)
# 獲得未來30天的資料
future = m.make_future_dataframe(periods=30)
forecast = m.predict(future)
print(forecast[['ds', 'yhat', 'yhat_lower', 'yhat_upper']].tail())
效果如下:
讓我們來看看效果,表格中的yhat指的是預測的平均值,yhat_lower是預測的最小值,yhat_upper是預測的最大值。根據“先知”的預測,在未來30天內我們的粉絲量將會增加到529名粉絲,也就是說將增加16%。這個預測的值其實相對客觀,我們一個月後就可以看看效果如何了。
關注下方的公眾號,回覆 “ 粉絲預測“即可獲得全部原始碼及資料。
我們的文章到此就結束啦,如果你希望我們今天的Python 教程,請持續關注我們,如果對你有幫助,麻煩在下面點一個贊/在看哦有任何問題都可以在下方留言區留言,我們都會耐心解答的!
Python實用寶典 (pythondict.com)
不只是一個寶典
歡迎關注公眾號:Python實用寶典
原文來自Python實用寶典:Python 先知模型
本作品採用《CC 協議》,轉載必須註明作者和本文連結
Python實用寶典, pythondict.com