python - 试图理解 FB Prophet 交叉验证
问题描述
我有一个包含 84 个月销售额的数据集(从 2013 年 1 月到 2019 年 12 月)——只有几个月,而不是几天。
Month 01 | Sale 1
Month 02 | Sale 2
Month 03 | Sale 3
.... | ...
Month 84 | Sale 84
通过可视化看起来模型非常适合......但我需要检查它......
所以我的理解是交叉 val 不支持月份,所以我所做的就是转换为使用天数(尽管我原来的 df 中没有天数信息)......
我想在前五年(60 个月)尝试我的模型,然后离开剩下的 2 年(24 个月),看看模型的预测效果如何......
所以我做了类似的事情:
cv_results = cross_validation( model = prophet, initial='1825 days', period='30 days', horizon = '60 days')
这有意义吗?
我没有得到截止日期和预测期的概念
解决方案
我也为此挣扎了一段时间。但这是它的工作原理。初始模型将根据前 1,825 天的数据进行训练。它将预测未来 60 天的数据(因为 Horizon 设置为 60)。然后,该模型将在初始周期 + 周期(在本例中为 1,825 + 30 天)进行训练,并预测接下来的 60 天。它将像这样继续,在训练数据中再增加 30 天,然后预测接下来的 60 天,直到没有足够的数据来执行此操作。
总而言之,周期是在每次交叉验证迭代中要添加到训练数据集中的数据量,而地平线是预测的距离。
推荐阅读
- json - ReactJS 嵌套属性不适用于 JSON 数据
- applescript - 为什么在 AppleScript for BBEdit 中使用替换时出现错误?
- python - 使用 BeautifulSoup 抓取 shopee.co.id 时得到一个空列表
- node.js - 使用multer在mongodb中保存多个文件
- function - 通用顶级函数参考
- excel - 确保公式单元格已更新
- python - 如何以编程方式在 Python 中按控制键和右箭头键?
- csv - d3.js 地图:使用 geojson 文件和 CSV 数据
- javascript - Javascript - 从数组中获取对象,该数组与另一个数组匹配
- java - 链表 addLast() 方法未按预期工作