最近公众号的粉丝量一直都处于上涨状态,可喜可贺当然,作为一个上进的(摸鱼)公众号博主,当然要追求更远大的目标。我希望知道一个月后公众号的粉丝量会达到什么程度,并以此加强公众号的宣传方式。

正好,Facebook开源了一个名为“先知”(prophet)的模型,其能基于加法模型预测时间序列数据,它的非线性趋势与年、周、日的季节性以及假日效应相吻合。而且对丢失的数据和趋势的变化很健壮,通常能很好地处理异常值。

我们将根据 Python 实用宝典 最近60天的关注量变化趋势用来预测未来30天的关注量大小。

Python预测公众号数据

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打开开发者工具

Python预测数据

然后选择最近两个月的数据,找到useranalysis的数据包,点开来就会找到我们需要的数据,把这一片json数据保存下来存为data.json文件即可,如下图所示。

Python预测数据

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实用宝典
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。