今天我们将使用Facebook的“先知”模型来预测2019年12月广东省的猪肉价格,本实验仅供参考。

1.准备数据

在猪价系统网站上利用开发者工具获得过去一年广东省的猪肉价格保存为json格式:
https://zhujia.zhuwang.cc/areapriceinfo-440000.shtml

部分数据如下:

实际上我认为,就猪价这样的对象,拿一年的数据是远远不够的,但是实在找不到前几年的数据。作为一次实验,我暂时以过去一年的数据作为训练集,如果你想要更精准地预测价格,建议至少找3年的数据。

2.数据预测

以下教程默认你已经安装好了Python并可以在CMD或Terminal中使用pip

2.1 安装 “先知” prophet

Prophet这个包真是一言难尽,如果你按照官方的教程来进行安装, 你会发现啥也安装不上(我吐了)。这里给大家介绍我的安装方法,避免你们走弯路:

第一步,我们需要安装fbprophet的依赖PyStan:

 pip install pystan

第二步,使用conda命令安装(需要安装anaconda, 搜anaconda官网安装即可):

conda install -c conda-forge fbprophet

2.2 编写预测代码

首先,利用开发者工具弄下来的数据缺少日期,我们需要获得过去365天的日期,并与原数据对应上:

# 获得2019-11-20过去365天的数据
days = []
today = datetime.date.today()
for i in range(0,366,1):
daybeforetoday = today + datetime.timedelta(days=-i)
days.append(daybeforetoday.strftime('%Y-%m-%d'))
days = list(reversed(days))
print(days)

然后我们将猪价提取出来,并将日期和猪价转换为pandas的DataFrame格式:

f = open('./data_20191120.json', 'r', encoding='utf-8')
json_data = json.load(f)
f.close()
# 提取猪价
list_number = json_data['pigprice']
print(len(list_number), len(days))
# prophet模型预测前需要将日期列设为ds,预测的值设为y
df = pd.DataFrame({'y':list_number, 'ds':days})
print(len(df), len(days))

最后,调用先知模型进行预测,这里我们只预测30天,所以periods设为了30:

from fbprophet import Prophet

# 调用"先知"生成对象
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())
#在学习Python的过程中,往往因为没有资料或者没人指导从而导致自己不想学下去了,因此我特意准备了个群 592539176 ,群里有大量的PDF书籍、教程都给大家免费使用!不管是学习到哪个阶段的小伙伴都可以获取到自己相对应的资料!
 

结果如下:

根据过去一年(可能不够)的猪肉价格数据,预测到在下个月的今天,猪肉将会上涨到49元/公斤左右的价格。由于数据量实在是太少了,检测不出每一年的猪肉波动性,因此这个预测得到的数据我估计误差比较大,但是大家只需要知道先知模型的使用方法,本文就值了。

猪肉涨价飞快?让我们用python来预测一下今年最后一个月的猪肉价格吧!的更多相关文章

  1. Python 从入门到精通:一个月就够了

    毫无疑问,Python 是当下最火的编程语言之一.对于许多未曾涉足计算机编程的领域「小白」来说,深入地掌握 Python 看似是一件十分困难的事.其实,只要掌握了科学的学习方法并制定了合理的学习计划, ...

  2. Python学习笔记23:Django构建一个简单的博客网站(一个)

    在说如何下载和安装Django,本节将重点讨论如何使用Django站点. 一 新建project 命令:django-admin startproject mysite # 有的须要输入:django ...

  3. python入门(4)第一个python程序

    python入门(4)第一个python程序 在交互式环境的提示符>>>下,直接输入代码,按回车,就可以立刻得到代码执行结果.现在,试试输入100+200,看看计算结果是不是300: ...

  4. 2019第一期《python测试开发》课程,10月13号开学

    2019第一期<python测试开发>课程,10月13号开学! 主讲老师:上海-悠悠 上课方式:QQ群视频在线教学,方便交流 本期上课时间:10月13号-12月8号,每周六.周日晚上20: ...

  5. python练习:假设s是一个字符串,返回s中十进制数字之和。例如,如果s是‘a2b3c’,则返回5。

    python练习:假设s是一个字符串,返回s中十进制数字之和.例如,如果s是‘a2b3c’,则返回5. 重难点:字符串转化为字符序列.in的多种应用.try-except代码块的使用. print(& ...

  6. Python编程求解第1天1分钱之后每天两倍持续一个月的等比数列问题

    一.问题 问题1 场景:如果你未来的丈母娘要求你,第1天给她1分钱,第2天给2分钱,第3天给4分钱,以此类推,每天给前一天的2倍,给1个月(按30天)算就行.问:第30天给多少钱,总共给多少钱? 问题 ...

  7. python日志按天分割,保存近一个月日志,日志自动清理

    python日志按天分割,保存近一个月日志 import os import logging import re from logging.handlers import TimedRotatingF ...

  8. 60分钟Python快速学习(给发哥一个交代)

    60分钟Python快速学习 之前和同事谈到Python,每次下班后跑步都是在听他说,例如Python属于“胶水语言啦”,属于“解释型语言啦!”,是“面向对象的语言啦!”,另外没有数据类型,逻辑全靠空 ...

  9. RobotFramework中加载自定义python包中的library(一个py文件中有多个类)

    结构如下: appsdk\ appsdk.py(这里面有多个类,包括appsdk,appsdksync等类) __init__.py ... ① 有个appsdk的文件夹(符合python包的定义) ...

随机推荐

  1. 用 Python 破解 WiFi 密码

    如今,WiFi 跟我们的生活息息相关,无处不在.没有 WiFi 的地方是没有灵魂的! ​ 然而,比没有WiFi更让人绝望的,是有满格WiFi信号却没有密码…… ​ 今天我们就来尝试下,如何利用pyth ...

  2. 关于JVM、JRE、Jdk三者的定义与联系

    许多初学者对于java中的JVM.JRE.JDK三者的定义与联系有些模糊,接下来我就根据我的理解来为各位解答一下,希望能帮到正在努力的你们. JVM JVM是Java  Virtual  Machin ...

  3. python的安装以及前景

    1.检查软件是否安装:在cmd命令行上输oython 假如环境已经配置好环境变量 则会显示为python的inf: 2.下载并安装python 打开python官网:https://www.pytho ...

  4. C# MD5 32大写位加密 UTF-8编码

    string UserMd5(string str) { string cl = str; string pwd = ""; MD5 md5 = MD5.Create();//实例 ...

  5. redis 事务(悲观锁和乐观锁)

    MULTI 开启事务,后续的命令会被加入到同一个事务中 事务中的操作会发送给客服端,但是不会立即执行,而是将操作放到了该事务对应的一个队列中,服务端返回QUEQUD EXEC 执行EXEC后,事务中的 ...

  6. JavaScript空字符串判断

    JavaScript空字符串判断 本文完整示例代码GIT仓: 测试用例完整代码:isNullOrEmpty jPublic GIT仓:jPublic 比较常见写法 if (str == 'undefi ...

  7. centos添加用户并赋予管理员权限

    用centos时,root用户一般都是超级管理员使用的,一般不轻易给别人,但是有时候同事安装软件时需要root账号,又不得不给,只能重新建一个用户,并赋予管理员权限.下面介绍创建用户并赋予管理员权限的 ...

  8. Flutter中通过https post Json接收Json

    Flutter 已然成为炙手可热前端框架.若问跨平台到底有多香,自然是要多香有多香.今天我就分享这些天研究Flutter http连接和json格式转换的内容,小弟对Flutter也是小白一名,如有错 ...

  9. glibc提供的malloc()的调试工具

    关键词:MALLOC_CHECK_.mtrace().muntrace().MALLOC_TRACE.mprobe().-lmcheck等等. 1. MALLOC_CHECK_环境变量(double ...

  10. Java学习笔记(8)---Scanner类,浅谈继承

    1.Scanner类: a.定义: java.util.Scanner 是 Java5 的新特征,我们可以通过 Scanner 类来获取用户的输入. Scanner s = new Scanner(S ...