利用prophet实现时间序列数据结果预测及对预测数据进行年度趋势和月度值分解

第一部分:prophet的介绍

选取一段chatgpt对该插件的解释,如下:
Prophet(预言家)是由Facebook开发的开源时间序列分析工具,旨在提供一个简单而强大的框架,用于预测时间序列数据。Prophet的设计目标是使时间序列分析更加可靠、易用,并且适用于各种类型的时间序列数据,无论是在商业、金融、自然资源、社会趋势等领域。

以下是Prophet的一些主要特点和优势:

自动检测季节性和节假日效应: Prophet能够自动检测并建模数据中的季节性和节假日效应,包括年度季节性、周季节性和特定的节假日。

可处理缺失数据和异常值: Prophet可以在存在缺失数据或异常值的情况下进行建模,减少了数据预处理的复杂性。

可解释性: Prophet生成的模型具有可解释性,可以通过分析分解后的成分来理解趋势、季节性和节假日效应对预测的影响。

灵活性: 用户可以根据实际情况,通过添加自定义的季节性和节假日效应来进一步改进模型。

支持多变量预测: Prophet支持对多变量时间序列数据进行预测,用户可以根据需要添加其他影响因素。

易用性: Prophet的API设计友好,使用简单,不需要过多的参数调整。

扩展性: Prophet是基于Stan概率编程语言构建的,因此可以通过调整参数来实现更复杂的建模和预测需求。

总之,Prophet是一个适用于时间序列分析的强大工具,尤其适合于那些对时间序列分析领域不太熟悉的用户。它的特点在于自动化的季节性和节假日效应检测,以及可解释性,使得用户能够更好地理解和预测时间序列数据的趋势和变化。

第二部分:prophet的安装方法

安装Prophet非常简单,可以通过以下步骤在Python环境中安装Prophet:

打开终端或命令提示符。

使用以下命令使用pip安装Prophet包:

pip install pystan==2.19.1.1
pip install prophet

请注意,上述安装步骤可能会根据您的系统和环境略有不同。如果您在安装过程中遇到任何问题,请查看Prophet的官方文档或社区支持。

安装完成后,您就可以在Python中导入Prophet并开始使用它进行时间序列分析和预测了。例如:

from prophet import Prophet

记得在导入和使用Prophet之前,确保您已经安装了必要的依赖库,并且Python的环境已经配置正确。

第三步:进行预测

完整代码如下:

import numpy as np
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt
# 示例数据,替换为您的实际数据
data =[{"时间":"2000/02","均值":0.266791999},{"时间":"2000/03","均值":0.310662061},{"时间":"2000/04","均值":0.378926367},{"时间":"2000/05","均值":0.377644122},{"时间":"2000/06","均值":0.509663224},{"时间":"2000/07","均值":0.559362471},{"时间":"2000/08","均值":0.600726485},{"时间":"2000/09","均值":0.533398926},{"时间":"2000/10","均值":0.425571382},{"时间":"2000/11","均值":0.344209075},{"时间":"2000/12","均值":0.276758969},....]
plt.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体为SimHei
plt.rcParams['axes.unicode_minus'] = False   # 解决保存图像是负号'-'显示为方块的问题# 将数据转换为DataFrame
df = pd.DataFrame(data)
df['ds'] = pd.to_datetime(df['时间'])
df.rename(columns={'均值': 'y'}, inplace=True)# 拆分训练测试数据
# split_index = int(len(df)*0.8)
# train = df[:split_index] 
# test = df[split_index:]
train = df[:-12]
test = df[-12:]# 初始化Prophet模型
model = Prophet(daily_seasonality=False)# 添加节假日效应(如果适用)
# model.add_country_holidays(country_name='US')# 训练模型
model.fit(train)# 生成未来日期(未来5年,每月)
future = pd.date_range(start='2021-01', periods=60, freq='M')
future = pd.DataFrame({'ds': future})# 进行预测
forecast = model.predict(future)# 打印预测结果
print(forecast[['ds', 'yhat']].tail(60))fig = model.plot_components(forecast)
# 分别设置trend成分的横纵坐标标签
for ax in fig.axes[:1]:ax.set_xlabel("年份", fontsize=16)ax.set_ylabel("趋势值", fontsize=16)ax.set_xticklabels(ax.get_xticklabels(), fontsize=14)ax.set_yticklabels(ax.get_yticklabels(), fontsize=14)# 分别设置yearly成分的横纵坐标标签
for ax in fig.axes[1:]:ax.set_xlabel("月份", fontsize=16)ax.set_ylabel("季节性值", fontsize=16)# 设置横坐标标签,这里以月份为例,根据实际情况调整x_labels = ['一月',  '三月','五月', '七月', '九月', '十一月', '一月']# 设置横坐标刻度和标签ax.set_xticklabels(x_labels, fontsize=14)ax.set_yticklabels(ax.get_yticklabels(), fontsize=14)# 设置标题
#plt.title('自定义标题')plt.tight_layout()
plt.savefig('F:/plot.jpg', dpi=600, format='jpg')
plt.show()

结果如下:
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes 集群利用 efk 收集容器日志

文章目录 [toc]前情提要制作 centos 基础镜像准备 efk 二进制文件部署 efk 组件配置 namespace配置 gfs 的 endpoints配置 pv 和 pvc部署 elasticsearchefk-cmefk-svcefk-sts 部署 filebeatfilebeat-cmfilebeat-ds 部署 kibanakibana-cmkibana-svckibana-dp使用 nodeport 访问 …

虹科新品丨RevPi Connect 4系列:基于树莓派CM4计算模块的全新工业树莓派

新品来袭 势不可挡 备受期待的虹科工业树莓派第四代产品—RevPi Connect 4终于来啦!作为全球领先的工业自动化产品,RevPi Connect 4融合了工业树莓派多年技术积累与创新突破,以及现代物联网技术的结晶。无论您是行业领先者、工程师还是智能科…

Android系统APP之SettingsProvider

前言 SettingsProvider顾名思义是一个提供设置数据共享的Provider,SettingsProvider和Android系统其它Provider有很多不一样的地方,如: SettingsProvider只接受int、float、string等基本类型的数据;SettingsProvider由Android系…

2023年我想开信用账户!融资融券开通佣金最低是多少?两融利率低至5%!

2023年融资融券开通佣金最低是多少?两融利率低至5%! 随着科技的不断发展和金融市场的日益完善,2023年的融资融券市场将迎来更加便捷和低成本的交易方式。据悉,融资融券开通佣金最低仅为5%,且利率也将进一步降至5%左右。…

Vue3 watch监听器

概览:watch监听器的定义以及使用场景。在vue3中的监听器的使用方式,watch的三个参数,以及进一步了解第一个参数可以是一个属性,也可以是一个数组的形式包含多个属性。 watch在vue3和vue2中的使用: vue3中&#xff1a…

考研408 | 【计算机网络】概述

计算机网络体系结构 计算机网络概述:1.概念,组成,功能,分类2.标准化工作及相关组织3.性能指标体系结构&参考模型:1.分层结构2.协议,接口,服务3.ISO/OSI模型4.TCP/IP模型 目录 计算机网络体…

使用 LangChain 搭建基于 Amazon DynamoDB 的大语言模型应用

LangChain 是一个旨在简化使用大型语言模型创建应用程序的框架。作为语言模型集成框架,在这个应用场景中,LangChain 将与 Amazon DynamoDB 紧密结合,构建一个完整的基于大语言模型的聊天应用。 本次活动,我们特意邀请了亚马逊云科…

《每天5分钟玩转kubernetes》读书笔记

笔记 概念 Pod是脆弱的,但应用是健壮的。 kubelet运行在Cluster所有节点上,负责启动Pod和容器。kubeadm用于初始化Cluster。kubectl是k8s命令行工具。通过kubectl可以部署和管理应用,查看各种资源,创建、删除和更新各种组件。 …

vue-cli3项目优化

首先添加两个量化的插件,方便对项目目前的情况进行分析: 1.添加speed-measure-webpack-plugin插件 —量化的指标可以看出前后对比 使用步骤: 安装speed-measure-webpack-plugin依赖 npm install speed-measure-webpack-plugin -D配置vue.c…

【Leetcode刷题】位运算

本篇文章为 LeetCode 位运算模块的刷题笔记,仅供参考。 位运算的常用性质如下: a ^ a 0 a ^ 0 a a ^ 0xFFFFFFFF ~a目录 一. 基本位运算Leetcode29.两数相除Leetcode89.格雷编码 二. 位运算的性质Leetcode136.只出现一次的数字Leetcode137.只出现一…

小程序商品如何设置限购

限购是一种常用的小程序商品销售策略,可以帮助商家提高销售额、控制库存和增加用户的购买欲望。那么,小程序产品怎么设置限购呢?下面将为您详细介绍。 1. 设置限购数量 可以设置最低购买数量来鼓励用户批量购买或满足特定的销售需求。例如&…

Pytorch使用VGG16模型进行预测猫狗二分类

目录 1. VGG16 1.1 VGG16 介绍 1.1.1 VGG16 网络的整体结构 1.2 Pytorch使用VGG16进行猫狗二分类实战 1.2.1 数据集准备 1.2.2 构建VGG网络 1.2.3 训练和评估模型 1. VGG16 1.1 VGG16 介绍 深度学习已经在计算机视觉领域取得了巨大的成功,特别是在图像分类任…