4

我正在研究芝加哥的犯罪数据集,并专门研究芝加哥犯罪率的未来预测(从 2012 年到 2016 年,我有数据)。我使用 facebook 的先知包生成了预测。它工作得很好,一切都完成了。现在我想训练和测试我的模型。因此,我将数据集分成 70% 的训练和 30% 的测试。我训练了模型并对其进行了测试,最后我得到了一个不错的情节。我对诊断部分更感兴趣。Prophet 提供了一个cross_validation()我使用的函数:df.cv<- cross_validation(m, initial = nrow(trainData), period = 365, horizon = nrow(testData), units = 'days') . 问题就在这里,我总是收到这个错误并从昨天开始尝试修复它,但没有成功:

Fehler in generate_cutoffs(df, horizon.dt, initial.dt, period.dt) : 
Less data than horizon after initial window. Make horizon or initial shorter.

有人知道如何修复此错误并提供诊断列表吗?

我的火车/测试图看起来是这样的:

训练/测试图

我的火车数据集可以在这里下载:https ://ufile.io/4e38c 我的测试数据集在这里:https ://ufile.io/ds65p

我希望有人能帮助我!这将是非常棒的,我将非常感激。提前致谢!

4

2 回答 2

2

交叉验证将应用于滑动窗口,根据设置执行截止。请在此处阅读文档: https ://facebook.github.io/prophet/docs/diagnostics.html

你得到的错误是因为你的滑动窗口超出了界限。试试这样:

df.cv<- cross_validation(m, initial = 100, period = 100, horizon = 100, units = 'days') 
于 2019-05-08T19:56:07.933 回答
1

我有类似的问题,我设法通过使用字符串参数来解决它,例如horizon="365 days", 而不是int horizon = 365

该解决方案适用于 Python 版本。

于 2020-07-22T12:15:40.113 回答