文章目录

  • 工具包
  • 使用代码

工具包

使用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库做概率预测相关推荐

  1. 利用Python Matplotlib库做简单的视觉化(2)

    Matplotlib练习 题目 练习一 方法一(条形图) 方法一效果图 方法二(扇形图) 方法二效果图 练习二 练习二代码 练习二效果图 小结 题目 练习一 方法一(条形图) from matplot ...

  2. 利用Python Matplotlib库做简单的视觉化

    Matplotlib练习 练习一 题目 代码 效果图 练习二 题目 练习1代码 练习1效果图 练习2代码 练习2效果图 小结 练习一 题目 代码 import matplotlib.pyplot as ...

  3. 独家 | 手把手教你用Python的Prophet库进行时间序列预测

    作者:Jason Brownlee 翻译:殷之涵 校对:吴振东 本文长度为4800字,建议阅读10+分钟 本文为大家介绍了如何在Python中使用由Facebook开发的Prophet库进行自动化的时 ...

  4. python 分类变量xgboost_如何用XGBoost做时间序列预测?

    作者:Jason Brownlee翻译:wwl校对:王雨桐本文约3300字,建议阅读10分钟本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型 ...

  5. 利用python机器学习库进行Kaggle皮马印第安人糖尿病预测分析

    利用python机器学习库进行Kaggle皮马印第安人糖尿病预测分析 项目摘要 本项目主要使用python对各医学参数与糖尿病之间的关系进行可视化分析.描述性分析.使用scikit-learn机器学习 ...

  6. python rsa 公钥解密_python利用rsa库做公钥解密的方法教程

    前言 对于RSA的解密,即密文的数字的 D 次方求mod N 即可,即密文和自己做 D 次乘法,再对结果除以 N 求余数即可得到明文.D 和 N 的组合就是私钥(private key). 算法的加密 ...

  7. python自动源码_谷歌推出Tangent开源库,在Python源代码上做自动微分

    原标题:谷歌推出Tangent开源库,在Python源代码上做自动微分 李林 编译自 Google Research Blog 谷歌今天推出了一个新的开源Python自动微分库:Tangent. 和现 ...

  8. Python 之 使用 PIL 库做图像处理

    http://www.cnblogs.com/way_testlife/archive/2011/04/17/2019013.html Python 之 使用 PIL 库做图像处理 1. 简介. 图像 ...

  9. python没有库_Python开发者必备6个基本库,这个都没有怎么做开发呢

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:py3study ( 想要学习Python?Pytho ...

最新文章

  1. Oracle 每个session的限制,限制oracle普通用户能且只能kill自己的会话
  2. 12个有趣的C语言面试题
  3. linux编程问题记录
  4. 苦等8个月!华为最令人期待的手机终于要来了:最快月底开卖
  5. 2008服务器网站设置密码,win2008服务器设置密码
  6. 【语音合成】基于matlab语音信号变速【含Matlab源码 565期】
  7. CorelDRAWX4的VBA插件开发(十三)一键转曲(转全部页面)
  8. 解决拼音汉字混合搜索,由于同音字导致搜出不相干的内容
  9. sap abap开发从入门到精通_云端的ABAP Restful服务开发
  10. NutUI 京东小程序发布了!
  11. mac安装虚拟机配置win10系统
  12. 【面试复习系列】常用机器学习算法知识点及其解析,面试官会考的几乎都有,欢迎补充
  13. 平方逼近matlab,MATLAB上机实验——最佳平方逼近
  14. (改进GM(1,1)模型)灰色残差马尔科夫预测模型的matlab实现
  15. 作为程序员的你在外行人眼里是一个怎样的群体?
  16. 网络游戏的体验度量方法
  17. 信息学奥赛一本通:1179:奖学金
  18. vue 数组中嵌套数组_vue数组嵌套数组的问题
  19. 适用于ABAQUS的黏弹性边界(粘弹性边界)及等效地震荷载施加插件程序
  20. 斐讯k1S v21.4.6.12 版本免拆机 刷机教程

热门文章

  1. TRIPLE is More Than DOUBLE Plus One
  2. UE4在VS2013中各个编译配置代表意义
  3. Facebook 数据的横向扩展
  4. 【分布式缓存系列】Redis实现分布式锁的正确姿势
  5. 深入分析Kubelet Bootstrap Checkpoint
  6. 期权、RSU的区别与行权事宜
  7. sqlite C/C++
  8. CSS的class、id、css文件名的常用命名规则
  9. (原)Mac下Apache添加限制IP线程模块:mod_limitipconn.so
  10. Java 内置的数据类型