最近公众号的粉丝量一直都处于上涨状态,可喜可贺(摸鱼)公众号博主,当然要追求更远大的目标。我希望知道一个月后公众号的粉丝量会达到什么程度,并以此加强公众号的宣传方式。
正好,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实用宝典