在搜索了一下之后,我还没有找到任何一个看起来很有希望作为python的ets替代品。但是有一些尝试:StatsModels和{a2},您可以检查它们是否适合您的需要。在

解决缺失实现的一个方法是使用subprocess模块从python运行R脚本。有一篇关于如何做到这一点的好文章here。在

为了后面的操作:您需要创建一个R脚本(例如my_forecast.R),它将

计算(使用ets)和打印文件上或stdout(使用cat()命令)上的预测,以便在脚本之后使用它们

跑。在

可以从python脚本运行R脚本,如下所示:import subprocess

# You need to define the command that will run the Rscript from the subprocess

command = 'Rscript'

path2script = 'path/to/my_forecast.R'

cmd = [command, path2script]

# Option 1: If your script prints to a file

subprocess.run(cmd)

f = open('path/to/created/file', 'r')

(...Do stuff from here...)

# Option 2: If your script prints to stdout

forecasts = subprocess.check_output(cmd, universal_newlines=True)

(...Do stuff from here...)

您还可以向cmd添加参数,Rscript将使用这些参数作为命令行参数,如下所示:args = [arg0, arg1, ...]

cmd = [command, path2script] + args

Then pass cmd to the subprocess

编辑:

我发现了一系列关于霍尔特·温特斯预测的文章:part1,part2和{a7}。除了这些文章中易于理解的分析之外,Gregory Trubetskoy(作者)还提供了他开发的代码:

初始趋势:def initial_trend(series, slen):

sum = 0.0

for i in range(slen):

sum += float(series[i+slen] - series[i]) / slen

return sum / slen

# >>> initial_trend(series, 12)

# -0.7847222222222222

最初的季节性因素:def initial_seasonal_components(series, slen):

seasonals = {}

season_averages = []

n_seasons = int(len(series)/slen)

# compute season averages

for j in range(n_seasons):

season_averages.append(sum(series[slen*j:slen*j+slen])/float(slen))

# compute initial values

for i in range(slen):

sum_of_vals_over_avg = 0.0

for j in range(n_seasons):

sum_of_vals_over_avg += series[slen*j+i]-season_averages[j]

seasonals[i] = sum_of_vals_over_avg/n_seasons

return seasonals

# >>> initial_seasonal_components(series, 12)

# {0: -7.4305555555555545, 1: -15.097222222222221, 2: -7.263888888888888,

# 3: -5.097222222222222, 4: 3.402777777777778, 5: 8.069444444444445,

# 6: 16.569444444444446, 7: 9.736111111111112, 8: -0.7638888888888887,

# 9: 1.902777777777778, 10: -3.263888888888889, 11: -0.7638888888888887}

最后算法:def triple_exponential_smoothing(series, slen, alpha, beta, gamma, n_preds):

result = []

seasonals = initial_seasonal_components(series, slen)

for i in range(len(series)+n_preds):

if i == 0: # initial values

smooth = series[0]

trend = initial_trend(series, slen)

result.append(series[0])

continue

if i >= len(series): # we are forecasting

m = i - len(series) + 1

result.append((smooth + m*trend) + seasonals[i%slen])

else:

val = series[i]

last_smooth, smooth = smooth, alpha*(val-seasonals[i%slen]) + (1-alpha)*(smooth+trend)

trend = beta * (smooth-last_smooth) + (1-beta)*trend

seasonals[i%slen] = gamma*(val-smooth) + (1-gamma)*seasonals[i%slen]

result.append(smooth+trend+seasonals[i%slen])

return result

# # forecast 24 points (i.e. two seasons)

# >>> triple_exponential_smoothing(series, 12, 0.716, 0.029, 0.993, 24)

# [30, 20.34449316666667, 28.410051892109554, 30.438122252647577, 39.466817731253066, ...

您可以将它们放在一个文件中,例如:holtwinters.py在具有以下结构的文件夹中:forecast_folder

|

└── __init__.py

|

└── holtwinters.py

从这里开始,这是一个python模块,您可以将它放在您想要的每个项目结构中,并在该项目的任何位置使用它,只需导入它。在

python构建指数平滑预测模型_python/scikit/numpy中r指数平滑状态空间模型的替代方案...相关推荐

  1. 多因子选选股MATLAB代码,MatlabCode 多因子模型构建。多因子模型是量化选股中最重要的一类模型 联合开发网 - pudn.com...

    MatlabCode 所属分类:金融证券系统 开发工具:matlab 文件大小:3946KB 下载次数:283 上传日期:2015-11-11 11:13:39 上 传 者:zhangyiwei 说明 ...

  2. python产生5个随机数_Python和numpy生成随机数

    http://blog.csdn.net/pipisorry/article/details/39086463 随机数种子 要每次产生随机数相同就要设置种子,相同种子数的Random对象,相同次数生成 ...

  3. python时间函数详解_Python:Numpy库基础分析——详解datetime类型的处理

    原标题:Python:Numpy库基础分析--详解datetime类型的处理 Python:Numpy库基础分析--详解datetime类型的处理 关于时间的处理,Python中自带的处理时间的模块就 ...

  4. python中tile的用法_Python:numpy中的tile函数

    在学习机器学习实教程时,实现KNN算法的代码中用到了numpy的tile函数,因此对该函数进行了一番学习: tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复 ...

  5. python科学计算笔记(一)NumPy中ndarray对象、ufunc运算、矩阵运算

    标准安装的Python中用列表(list)保存一组值,可以用来当作数组使用,不过由于列表的元素可以是任何对象,因此列表中所保存的是对象的指针.这样为了保存一个简单的[1,2,3],需要有3个指针和三个 ...

  6. python定义一个空数组_在NumPy中如何创建一个空的数组/矩阵?

    如何以我通常使用列表(List)的方式使用Numpy数组或矩阵? 我想创建一个空的数组(或矩阵),然后每次添加一列(或行)到这个数组(或矩阵). 目前能想到的方法是: mat = None for c ...

  7. python向excel写数据_Python向excel中写入数据的方法

    最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 xlwt依赖包,安装的方法就很简单,直接 p ...

  8. 基于python脚本的参数化建模_Python在ABAQUS中

    Python在ABAQUS中 所属分类:其他 开发工具:Python 文件大小:17325KB 下载次数:0 上传日期:2020-11-25 11:47:17 上 传 者:qwe12334 说明:   ...

  9. python构建指数平滑预测模型_python指数平滑

    广告关闭 回望2020,你在技术之路上,有什么收获和成长么?对于未来,你有什么期待么?云+社区年度征文,各种定制好礼等你! 由此可以得到最优的平滑系数,这里可以引入线性规划的思想来求得最优解但是:py ...

最新文章

  1. 程序不能使用中文名_这几款车没有中文名?那买车时应该怎么叫?
  2. 实现Android和PC之间的蓝牙通信
  3. 设置ComboBox控件的小箭头颜色.
  4. 用linq查询html中div个数,C#使用Linq to XML进行XPath查询
  5. 跨地域的VPC私网互通【高速通道案例】
  6. plsql不加date
  7. 简单谈谈编程语言(二)
  8. 绿色建筑、装配式建筑工作加速推进,建筑行业招聘需求急速飞升
  9. 更换SSD系统盘-PE重装系统
  10. 专访黄泽武:顺丰科技是如何应用边缘计算的?
  11. 网易楚留香获取服务器信息,楚留香日常任务流程一览 新手大侠不能错过
  12. POJ2395 Out of Hay - Kruskal算法
  13. java 3 3数字拼图,基于Vue.js实现数字拼图游戏
  14. 第一次写博客,给大家推荐几个C语言视频教程
  15. 《C++面试宝典》V1.0 冲刺大厂~持续更新(12)
  16. 微型计算机的结构原理所采用的结构是,微型计算机的结构原理所采用的结构是-汉丙搜题...
  17. 用知识图谱实现可拓学例子
  18. 想学3D建模我该如何选择培训机构?
  19. visual c++ 下载地址
  20. 魔兽世界8.0服务器不稳定老掉线,魔兽世界8.0升级常见BUG及解决方法介绍

热门文章

  1. java算法在工作,我在北京找工作(三):java实现算法2 直接插入排序+不可变类...
  2. SQL必知必会-数据插入
  3. Tensorflow -mofan1
  4. 基础知识—函数-默然参数
  5. endwith php,辅助函数 | 进阶系列 | Laravel 7 中文文档
  6. 量化信噪比 非均匀量化_键摄基础1:为什么要正确曝光/ADC精度和量化噪声
  7. 《Oracle Life-DBA的一天》海报下载
  8. DBASK数据库提问平台问题集萃,首批近二十位专家团曝光
  9. 新特性:postgresql的vacuum漫谈
  10. 云图说|Git云上仓库哪家好?一张图了解华为云代码托管服务