今天我们将使用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 周刊第 418 期

    新闻 PyCon US 2020 开始接受财务赞助! https://pycon.blogspot.com/2019/10/financial-aid-launches-for-pycon-us-20 ...

  2. 一文掌握 Lambda 表达式

    本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法,并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总 ...

  3. @Transactional注解失效

    一.特性 先来了解一下@Transactional注解事务的特性吧,可以更好排查问题 1.service类标签(一般不建议在接口上)上添加@Transactional,可以将整个类纳入spring事务 ...

  4. 使用matplotlib.pyplot中plot()绘制折线图

    1.函数形式 plt.plot(x, y, format_string, **kwargs) x轴数据,y轴数据,format_string控制曲线的格式字串(format_string 由颜色字符, ...

  5. python frozenset

    1. 一旦初始化,并不可以改变 2. 可以作为字典的键值

  6. Microsemi Libero系列教程(一)——Libero开发环境介绍、下载、安装与注册

    前言 相比与Xilinx和Altera在国内的市场,Microsemi的FPGA在国内应用很少很少,网上几乎没有详细的教程,刚开始使用时,遇到了各种问题,自己也走了不少弯路.本系列教程以Libero ...

  7. (转)vscode实现markdown流程图

    原文:https://blog.csdn.net/LaySwift/article/details/79458947 1,vscode原生支持markdown,导出需要插件,基于node.js,需要n ...

  8. 原生js对cookie的增删改查

    一.增 document.cookie = cname + "=" + cvalue + ";expires=" + expires + ";path ...

  9. SAP 固定资产添加新类别

    需求:添加资产新类别(LEASE) 步骤: 1.添加 Account determination ①SPRO->Financial Accounting(New)->Asset Accou ...

  10. Thymeleaf常用语法:模板文件中表达式调用Java类的静态方法

    在模板文件的表达式中,可以使用“${T(全限定类名).方法名(参数)}”这种格式来调用Java类的静态方法. 开发环境:IntelliJ IDEA 2019.2.2Spring Boot版本:2.1. ...