新版本ProPhet时间序列预测1:模型解释和安装和初步使用

news2024/11/15 14:01:16

ProPhet时间序列预测1安装和初步使用

  • 安装
      • pip安装
      • conda安装
    • Prophet
    • 模型使用
        • 读取数据将数据处理为ds和y两列
        • 看下数据的分布
        • 模型训练
        • 预测
        • 可视化预测结果
        • 可视化趋势、假期、每周、季节性、年度季节性的回归图
        • 1.0之前模型保存

安装

安装1.0版本之后:
区别: 1.0版本叫prophet <1.0版本叫fbprophet
1.0以下版本安装

pip安装

备注(不建议pip安装 如果安装报错解决如下):
pip install pystan报错先安装以下在安装pystan
Cython
convertdate
lunarcalendar
holidays
tqdm
pytan

pip install fbprophet报错 先安装以下
pandas
convertdate
lunarcalendar
holidays

其中0.7版本的pfprophet需要指定numpy版本小于1.24, pandas需要支持append方法的旧版本
pip install numpy==1.23.5
pip install pandas==1.0.3

conda安装

1.0 以下安装

conda install pystan
conda install -c conda-forge fbprophet
conda install plotly  # 不安装的话可视化会报错

1.0 以上安装

conda install -c conda-forge prophet
conda install plotly  # 不安装的话可视化会报错

Prophet

Prophet原理图Prophet的大致原理如下,它将一个时间序列看成是三部分的组合:趋势,季节和假日和其他

Prophet对缺失值友好,但对异常值敏感。异常值可设置成None,防止影响模型的拟合。
模型默认线性趋势,但如果数据按照log方式增长的,可调节为growth=”logistic”逻辑回归模型。
当我们预先知道某天会影响数据的整体走势,可以提前将此天设置成转折点(changepoint)。
在设定周期性时,模型默认按照年、星期、天设定,月和小时如需要自行设定。
针对节假日,可通过holiday来进行调节,针对不同的假期,可调整不同的前后窗口期,例如:春节7日

Prophet参数及默认值介绍:
def __init__(
            self,
            growth='linear',
            changepoints=None,
            n_changepoints=25,
            changepoint_range=0.8,
            yearly_seasonality='auto',
            weekly_seasonality='auto',
            daily_seasonality='auto',
            holidays=None,
            seasonality_mode='additive',
            seasonality_prior_scale=10.0,
            holidays_prior_scale=10.0,
            changepoint_prior_scale=0.05,
            mcmc_samples=0,
            interval_width=0.80,
            uncertainty_samples=1000,
            stan_backend=None
    ):

• growth:趋势函数设置,默认线性“linear”,可选非线性“logistic”。
• changepoints:选择突变点,默认自动选择“None”。 传时间即可 如:["2023-4-15"]
• n_changepoints:突变点个数,默认“25个”。如果changepoints指定,则这个参数就废弃了;如果changepoints没指定,
则会从输入的历史数据前80%中自动选取25个突变点。
• changepoint_range:突变点数据范围,默认“80%”。同样,如果changepoints指定,则这个参数就废弃了。
• changepoint_prior_scale: 调节“changepoints”发现强度,默认“0.05”。值越大对历史数据拟合程度越强,但会增加过拟合的风险。
• yearly_seasonality: 数据是否有年季节性,默认“自动检测”。
• weekly_seasonality: 数据是否有周季节性,默认“自动检测”。
• daily_seasonality: 数据是否有天季节性,默认“自动检测”。
• holidays:指定节假日,默认“None”,支持手动输入指定节假日。以DataFrame格式输入,涵盖:必须列【holiday(string)、ds(date)】、
可选列【lower_window(int)、upper_window(int),指定影响的前后窗口期】。
• seasonality_mode: 季节性效应模式,默认加法模式“additive”,可选“multiplicative”乘法模式。
• seasonality_prior_scale: 调节季节性效应模式强度,默认“10”。值越大,季节性对模型影响越大。
• holidays_prior_scale: 调节节假日模式强度,默认“10”。值越大,节假日对模型影响越大。

模型使用

读取数据将数据处理为ds和y两列

import os
import numpy as np
import pandas as pd
from prophet import Prophet
from prophet.plot import add_changepoints_to_plot
import plotly.express as px
from prophet.plot import plot_plotly, plot_components_plotly, plot_cross_validation_metric


data = pd.read_csv("1_features.csv")
# prophet 时间列叫ds 目标值叫y
data = data.rename(columns={"ts": "ds", "data": "y"})[["ds", "y"]]

看下数据的分布

fig = px.line(data, x="ds", y="y")
fig.show()

在这里插入图片描述

模型训练

# model = Prophet(changepoints=['2022/11/24', '2023/2/25'], yearly_seasonality=True, weekly_seasonality=True, daily_seasonality=True)
model = Prophet()
# 采用中国的假期模式
model.add_country_holidays(country_name="CN")
model.fit(data)

预测

# 模型预测输出预测值、预测上限、预测下限等字段。
future = model.make_future_dataframe(periods=3, include_history=False)
forecast = model.predict(future)
print(forecast)

可视化预测结果

## 1.0 版本之前可视化
# fig1 = model.plot(forecast)
# # fig1.savefig('temp1.png')
# 突变点可视化
# add_changepoints_to_plot(fig1.gca(), model, forecast)
# fig1.show()


# 1.0版本之后可视化预测结果
fig = plot_plotly(model, forecast, trend=True)
# 显示突变点
# fig = plot_plotly(model, forecast, trend=True, changepoints=True)
fig.show()

在这里插入图片描述

在这里插入图片描述

可视化趋势、假期、每周、季节性、年度季节性的回归图

# 可视化趋势、假期、每周、季节性、年度季节性的回归图
fig = plot_components_plotly(model, forecast)
fig.show()

在这里插入图片描述

1.0之前模型保存

# 模型保存
with open('prophet_model.json', 'w') as md:
    json.dump(model_to_json(model), md)

# 模型读取
with open('prophet_model.json', 'r') as md:
    model = model_from_json(json.load(md))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/447748.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

设计模式-行为型模式之策略模式

5. 策略模式 5.1. 模式动机 完成一项任务&#xff0c;往往可以有多种不同的方式&#xff0c;每一种方式称为一个策略&#xff0c;我们可以根据环境或者条件的不同选择不同的策略来完成该项任务。 在软件开发中也常常遇到类似的情况&#xff0c;实现某一个功能有多个途径&#x…

【原理图专题】如何把PCB元件位号重排并反标到原理图

在画原理图时我们有时会复制以前项目或其他项目已经现成的模块进行电路的搭建。但可能会遇到一个问题,就是复制过来后位号也跟着过来了。比如说一个板子可能只有100个元件,但是会出现位号上千的元件。这对于后面我们焊接、维修等都很不利。 那可能有人会问,我直接在画完原理…

Redis持久化机制导致服务自启动后恢复数据过长无法使用以及如何关闭

场景 若依前后端分离版手把手教你本地搭建环境并运行项目&#xff1a; 若依前后端分离版手把手教你本地搭建环境并运行项目_霸道流氓气质的博客-CSDN博客 在上面搭建前后端分离的项目后&#xff0c;如果需要在windows服务上进行部署。 若依前后端分离版本&#xff0c;Windo…

58 openEuler搭建Mariadb数据库服务器-管理数据库

文章目录 58 openEuler搭建Mariadb数据库服务器-管理数据库58.1 创建数据库58.2 查看数据库58.3 选择数据库58.4 删除数据库58.5 备份数据库58.6 恢复数据库 58 openEuler搭建Mariadb数据库服务器-管理数据库 58.1 创建数据库 可以使用CREATE DATABASE语句来创建数据库。 CR…

Jetson Nano (4GB)烧写jetbot Image

一、Image下载 1、官方下载&#xff0c;浏览器访问Using SD Card Image - JetBot&#xff0c;下载jetbot-043_nano-4gb-jp45.zip。 注意&#xff1a;通过此方式下载需要电脑能访问外网。 2、天翼网盘下载&#xff0c;https://cloud.189.cn/t/q2mUJv7jaIna &#xff08;访问码…

【三十天精通Vue 3】 第十五天 Vue 3的异步组件和代码拆分

✅创作者&#xff1a;陈书予 &#x1f389;个人主页&#xff1a;陈书予的个人主页 &#x1f341;陈书予的个人社区&#xff0c;欢迎你的加入: 陈书予的社区 &#x1f31f;专栏地址: 三十天精通 Vue 3 文章目录 引言一、Vue 3 中的异步组件1.1 异步组件的概念1.2 Vue 3 中的异步…

Python机器学习、深度学习技术提升气象、海洋、水文领域应用

Python是功能强大、免费、开源&#xff0c;实现面向对象的编程语言&#xff0c;能够在不同操作系统和平台使用&#xff0c;简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库&#xff0c;还有丰富的第三方库&#xff0c;Python在数据处理、科学计算、数学建模、数据挖…

设计模式--原型模式

目录 基本介绍 传统方式克隆 原型模式改进 浅拷贝和深拷贝 浅拷贝的介绍 深拷贝的介绍 原型模式的注意事项和细节 基本介绍 (1) 原型模式(prototype模式): 用原型实例指定创建对象的种类 并且通过拷贝这些原型 创建新的对象 (2) 原型模式是一种创建型设计模式 允许一个…

妙用Java 8中的 Function接口,消灭if...else

在开发过程中经常会使用if...else...进行判断抛出异常、分支处理等操作。这些if...else...充斥在代码中严重影响了代码代码的美观&#xff0c;这时我们可以利用Java 8的Function接口来消灭if...else...。 if (...){throw new RuntimeException("出现异常了")&#x…

全网详细解决1093 - You can‘t specify target table ‘xxx‘ for update in FROM clause的错误

文章目录 1. 复现错误2. 分析错误3. 解决错误 1. 复现错误 今天在工作时&#xff0c;接到一个新需求&#xff0c;就是将app_page_button表中的label_code字段修改为edit&#xff0c;条件如下&#xff1a; 只更新值为null的label_code 且以/edit/${id}结尾的option_value 首先…

基于微信小程序+爬虫制作一个表情包小程序

跟朋友聊天斗图失败气急败坏的我选择直接制作一个爬虫表情包小程序,从源头解决问题,从此再也不用担心在斗图中落入下风 精彩专栏持续更新↓↓↓ 微信小程序实战开发专栏 一、API1.1 项目创建1.2 图片爬虫帮助类1.3 测试窗体1.4 接口封装二、小程序2.1 项目创建2.2 页面设计2.…

css 实现太极效果

目录 一、简述二、太极效果制作 一、简述 本次主要介绍::after&#xff0c;::before&#xff0c;box-shadow这三个属性。 ::after&#xff0c;::before这两个是伪类选择器&#xff0c;box-shaow是用来设置元素的阴影效果 before:向选定的元素前插入内容 after:向选定的元素后插…

关于在线CAD编辑的解决方案思考

基于ODA的VisualizeJs库的能力 ODA官网的OpenCloud提供了在线浏览CAD图纸的能力(ODA自身也不支持直接在线解析Dwg&#xff0c;而是通过ODA提供的WebTools里面的FileConverter的能力将dwg图纸转换为VSF格式(CAD的一种二三维格式&#xff0c;在AutoCAD中也有一种类似的ForgeView…

chatGPT衣食住行10种场景系列教程(01)使用chatGPT设计发型、P图变漂亮~真帅哈哈哈~

导读 时隔5个多月&#xff0c;chatGPT可谓是一日千里&#xff0c;越演越火&#xff0c;携带着AIGC行业一起飞了起来&#xff0c;那么在短短5个月当中有那些值得我们关注的事件&#xff1f;有那些好玩的场景&#xff1f;以及有那些chatGPT好用的工具&#xff1f;本文都将一一告…

neo4j数据库的安装及使用

一、安装neo4j 安装neo4j数据库&#xff0c;需要先安装jdk&#xff0c;jdk版本不能太低&#xff0c;不然运行neo4j的时候会报错。 我下载的是jdk11&#xff0c;以前已经下载过了&#xff0c;这里不再进行演示&#xff0c;下载jdk11的教程应该挺多的&#xff0c;自己搜一个吧 …

nodejs+vue美容院预约管理系统springboot+java+python

本课题将根据用户类型大致划分为管理员模块和美容师模块和用户模块&#xff0c;开发语言拟采用目前比较 语言 node.js 框架&#xff1a;Express 前端:Vue.js 数据库&#xff1a;mysql 数据库工具&#xff1a;Navicat 开发软件&#xff1a;VScode &#xff0c;界面采用vue前端框…

jsp+servlet教材预定系统mysql

目 录 一、引言 6 (一) 课题目的及意义 6 1、课题目的 6 2、课题研究意义 6 (二) 国内外研究现状 6 1、国外研究现状 6 2、国内研究现状 7 (三) 研究方法及设计思路 7 1、研究方法 7 2、设计思路 8 二、需求分析与可行性分析 9 (一) 需求分析…

源码:LeakCanary

一、介绍 自动检测内存泄漏的检查工具 二、使用 debugImplementation com.squareup.leakcanary:leakcanary-android:2.5debugImplementation只在debug模式的编译和最终的debug apk打包时有效 Memory Profiler 使用步骤 生成的内存泄漏快照 会放在sdcard/Download/leakcanar…

Node【Global全局对象】之【URL】

文章目录 &#x1f31f;前言&#x1f31f;URL&#x1f31f;URL组成部分&#x1f31f;URL 类&#x1f31f;url.href&#x1f31f;url.pathname&#x1f31f;url.port&#x1f31f;url.protocol&#x1f31f;url.search&#x1f31f;url.searchParams&#x1f31f;url.hash&#…

DAY829

学习目标&#xff1a;成就上瘾&#xff0c;学到欲罢不能 4月&#xff08;复习完高数18讲内容&#xff0c;背诵21篇短文&#xff0c;熟词僻义300词基础词&#xff09; 学习内容&#xff1a; 暴力英语&#xff1a;背单词150个&#xff0c;背《死亡诗社》经典语段&#xff0c;抄写…