使用python GluonTS库做概率预测
文章目录
- 工具包
- 使用代码
工具包
使用GluonTS工具包,主页:https://ts.gluon.ai/
github页面:https://github.com/awslabs/gluon-ts/
使用代码
非官方代码,是我学习时测试的代码,并且尽可能标注了注释:
核心代码:
import pandas as pd
import matplotlib.pyplot as plt
from gluonts.dataset.common import ListDataset
from gluonts.mx.trainer import Trainer
from gluonts.model.simple_feedforward import SimpleFeedForwardEstimator
from gluonts.evaluation.backtest import make_evaluation_predictionsdef probabilistic_predict(train_se: pd.Series, test_se: pd.Series, freq):training_data = ListDataset( # 使用这个工具包需要把数据格式转换为这种类型[{"start": train_se.index[0], # 训练集的起始日期"target": train_se,}],freq=freq,)test_data = ListDataset([{"start": train_se.index[0], # 测试集的起始日期"target": pd.concat([train_se, test_se]), # 注意这里是训练集+测试集}],freq=freq,)prediction_length = len(test_se)estimator = SimpleFeedForwardEstimator( # 构造训练器num_hidden_dimensions=[100],prediction_length=prediction_length,context_length=100,freq=freq,trainer=Trainer(epochs=10,learning_rate=1e-3,num_batches_per_epoch=100))predictor = estimator.train(training_data) # 开始训练forecast_it, ts_it = make_evaluation_predictions( # 用测试集测试训练的效果dataset=test_data, # test datasetpredictor=predictor, # predictornum_samples=100, # number of sample paths we want for evaluation)tss = list(ts_it)ts_entry = tss[0]forecasts = list(forecast_it)forecast_entry = forecasts[0]return ts_entry, forecast_entry
绘图函数:
def plot_prob_forecasts(ts_entry, forecast_entry): # 绘图plot_length = 100 # 绘制多少个点prediction_intervals = (50.0, 90.0)legend = ["observations", "median prediction"] + [f"{k}% prediction interval" for k in prediction_intervals][::-1]fig, ax = plt.subplots(1, 1, figsize=(20, 10))ts_entry[-plot_length:].plot(ax=ax) # plot the time seriesforecast_entry.plot(prediction_intervals=prediction_intervals, color='g')plt.grid(which="both")plt.legend(legend, loc="upper left")plt.savefig('save_fig.png')plt.show()
使用:
if __name__ == '__main__':import numpy as np# 生成从2021.01.01至2021.12.30共365天的数据,模拟时间序列time_df = pd.DataFrame(np.random.randint(0, 10, size=(365, 1)), columns=['data'],index=pd.date_range('2021-01-01', periods=365, freq='D'))# 把1.1至10.31当做训练集,11.1至12.30当做测试集train = time_df.truncate(after='2021-10-31').iloc[:, 0]test = time_df.truncate(before='2021-11-01').iloc[:, 0]ts_entry, forecast_entry = probabilistic_predict(train, test, freq='D') # 预测plot_prob_forecasts(ts_entry, forecast_entry) # 绘图
绘制出的效果图如下:
由于是随机数,因此可预测性并不高,效果自然不会太好。
使用python GluonTS库做概率预测相关推荐
- 利用Python Matplotlib库做简单的视觉化(2)
Matplotlib练习 题目 练习一 方法一(条形图) 方法一效果图 方法二(扇形图) 方法二效果图 练习二 练习二代码 练习二效果图 小结 题目 练习一 方法一(条形图) from matplot ...
- 利用Python Matplotlib库做简单的视觉化
Matplotlib练习 练习一 题目 代码 效果图 练习二 题目 练习1代码 练习1效果图 练习2代码 练习2效果图 小结 练习一 题目 代码 import matplotlib.pyplot as ...
- 独家 | 手把手教你用Python的Prophet库进行时间序列预测
作者:Jason Brownlee 翻译:殷之涵 校对:吴振东 本文长度为4800字,建议阅读10+分钟 本文为大家介绍了如何在Python中使用由Facebook开发的Prophet库进行自动化的时 ...
- python 分类变量xgboost_如何用XGBoost做时间序列预测?
作者:Jason Brownlee翻译:wwl校对:王雨桐本文约3300字,建议阅读10分钟本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型 ...
- 利用python机器学习库进行Kaggle皮马印第安人糖尿病预测分析
利用python机器学习库进行Kaggle皮马印第安人糖尿病预测分析 项目摘要 本项目主要使用python对各医学参数与糖尿病之间的关系进行可视化分析.描述性分析.使用scikit-learn机器学习 ...
- python rsa 公钥解密_python利用rsa库做公钥解密的方法教程
前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...
- python自动源码_谷歌推出Tangent开源库,在Python源代码上做自动微分
原标题:谷歌推出Tangent开源库,在Python源代码上做自动微分 李林 编译自 Google Research Blog 谷歌今天推出了一个新的开源Python自动微分库:Tangent. 和现 ...
- Python 之 使用 PIL 库做图像处理
http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html Python 之 使用 PIL 库做图像处理 1. 简介. 图像 ...
- python没有库_Python开发者必备6个基本库,这个都没有怎么做开发呢
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:py3study ( 想要学习Python?Pytho ...
最新文章
- Oracle 每个session的限制,限制oracle普通用户能且只能kill自己的会话
- 12个有趣的C语言面试题
- linux编程问题记录
- 苦等8个月!华为最令人期待的手机终于要来了:最快月底开卖
- 2008服务器网站设置密码,win2008服务器设置密码
- 【语音合成】基于matlab语音信号变速【含Matlab源码 565期】
- CorelDRAWX4的VBA插件开发(十三)一键转曲(转全部页面)
- 解决拼音汉字混合搜索,由于同音字导致搜出不相干的内容
- sap abap开发从入门到精通_云端的ABAP Restful服务开发
- NutUI 京东小程序发布了!
- mac安装虚拟机配置win10系统
- 【面试复习系列】常用机器学习算法知识点及其解析,面试官会考的几乎都有,欢迎补充
- 平方逼近matlab,MATLAB上机实验——最佳平方逼近
- (改进GM(1,1)模型)灰色残差马尔科夫预测模型的matlab实现
- 作为程序员的你在外行人眼里是一个怎样的群体?
- 网络游戏的体验度量方法
- 信息学奥赛一本通:1179:奖学金
- vue 数组中嵌套数组_vue数组嵌套数组的问题
- 适用于ABAQUS的黏弹性边界(粘弹性边界)及等效地震荷载施加插件程序
- 斐讯k1S v21.4.6.12 版本免拆机 刷机教程